[Gdal-dev] Digging Java JNI bindings
Simone Giannecchini
simboss1 at gmail.com
Mon Oct 30 13:30:56 EST 2006
Ciao Norman,
I have tried adding your code while updating and rebuilding gdal from
sources with no luck. Do you mind if I send you a self contained test
case (code+sample image) to test?
Thx,
Simone.
On 10/30/06, Norman Barker <nbarker at ittvis.com> wrote:
>
>
> -----Original Message-----
> From: gdal-dev-bounces at lists.maptools.org
> [mailto:gdal-dev-bounces at lists.maptools.org] On Behalf Of Simone
> Giannecchini
> Sent: 28 October 2006 02:32
> To: gdal-dev at lists.maptools.org
> Subject: [Gdal-dev] Digging Java JNI bindings
>
> Hi list,
> I am playing with the GDAL SWIG bindings for Java in order to continue
> the work that Daniele Romagnoli carried out for the Summer Of Code
> program. So far we have achieved to built ImageIO plugins to read
> ECW, JPEG2K and HDF dataset. I am starting to play around with
> creating datasets but I am a bit stuck. Before starting to look at
> extending the actual Java bindings to best work in a tile(block)
> oriented way I wanted to play around a bit with what it is availaible
> right now. I am trying with the following code in order to convert a
> jpeg image into a tiff image. I get no error but the output tiff
> appears to be empty.
>
> final File outFile = new File("c:/out.tiff");
> final BufferedImage im = ImageIO.read(new
> File("c:/2.jpg"));
> outFile.createNewFile();
> Driver jp2kDriver = gdal.GetDriverByName("GTiff");
> Dataset ds =
> jp2kDriver.Create(outFile.getAbsolutePath(),
> im.getWidth(), im.getHeight(), 3,
> gdalconstConstants.GDT_Byte,
> null);
> RenderedOp b0 = BandSelectDescriptor.create(im, new
> int[] { 0 }, null);
> RenderedOp b1 = BandSelectDescriptor.create(im, new
> int[] { 1 }, null);
> RenderedOp b2 = BandSelectDescriptor.create(im, new
> int[] { 2 }, null);
>
> ds.GetRasterBand(1).WriteRaster_Direct(
> 0,
> 0,
> im.getWidth(),
> im.getHeight(),
> 0,
> 0,
> gdalconstConstants.GDT_Byte,
> ByteBuffer.wrap(((DataBufferByte)
> b0.getAsBufferedImage()
>
> .getData().getDataBuffer()).getData(0)));
> ds.GetRasterBand(2).WriteRaster_Direct(
> 0,
> 0,
> im.getWidth(),
> im.getHeight(),
> 0,
> 0,
> gdalconstConstants.GDT_Byte,
> ByteBuffer.wrap(((DataBufferByte)
> b1.getAsBufferedImage()
>
> .getData().getDataBuffer()).getData(0)));
> ds.GetRasterBand(2).WriteRaster_Direct(
> 0,
> 0,
> im.getWidth(),
> im.getHeight(),
> 0,
> 0,
> gdalconstConstants.GDT_Byte,
> ByteBuffer.wrap(((DataBufferByte)
> b2.getAsBufferedImage()
>
> .getData().getDataBuffer()).getData(0)));
>
>
>
> I am sure I am missing something, any hint is greatly appreciated!
>
>
> Thx,
> Simone.
>
> --
>
> Simone,
>
> If by the output tiff being empty, you mean you only get the 8 byte tiff
> header then you need to add
>
> ds.FlushCache();
> ds.delete();
>
> to the end your routine this forces the file to be created, this could
> be added to a finalizer of one of your base classes if you wanted to
> hide it, I have just tried it with your code and it creates the whole
> file.
>
> Norman
>
>
--
-------------------------------------------------------
Eng. Simone Giannecchini
President /CEO GeoSolutions
http://www.geo-solutions.it
-------------------------------------------------------
More information about the Gdal-dev
mailing list