Skip to main content

RE: [JAI-IMAGEIO] TIFF reader exception: width*height > Integer.MAX_VALUE, bug or feature?

3 replies [Last post]
Anonymous

>>> mike.nidel@lmco.com 12.12.2007 22:34:18 >>>
>>>You must have missed my reply last week.
If you mean your answer (and thank you or answering) about the image
not being
tiled, no, I did not miss it. And I acted on it. As far as I can tell
everything is
tiled. I checked this by printing out the tile width / height at every
node
in the chain. Also, the code works for an other image that is 10921 x
9533 ie
about 400 MB which is way more than what the default JVM 64 MB can
handle if not tiled. So I guess it is tiled.

>I think I have a way for you to
>debug this. You need to get a hold of the LAST image in your chain
>>before writing to disk. Check if this image is tiled -- do a
getTileWidth() and
>getTileHeight() and see if they match your expectations.

Thats what I did.

>My strong suspicion is that your operation chain is constructed in
such
>a way that you are untiling the image. If you want to be very
thorough,
>print the tile sizes for every RenderedImage/RenderedOp in the chain.
>If the tile size jumps up at some point, you should set the desired
tile
>size in that op by passing in an ImageLayout on the RenderingHints
under
>JAI.KEY_IMAGE_LAYOUT.
Just rechecked this, the tile size is 256 x 256 after each op in the
chain.

So, still confused, bug or feature?

br Kusti

> -----Original Message-----
> From: Kustaa Nyholm [mailto:Kustaa.Nyholm@planmeca.com]
> Sent: Wednesday, December 12, 2007 3:08 PM
> To: interest@jai-imageio.dev.java.net
> Subject: RE: [JAI-IMAGEIO] TIFF reader exception:
> width*height > Integer.MAX_VALUE, bug or feature?
>
>
>
> >>> mike.nidel@lmco.com 12.12.2007 21:15:12 >>> ok, refresh my memory

> >>>again: what's the exact spot where you get
> the
> >>>exception from? it's not after readAsRenderedImage() right?
>
> The exception happens when the code tries to write out the
> subsampled image.
>
> The complete test case and exception trace follows, plus I've
> include the 'tiffinfo' dump for the test file I'm using.
>
> Note that the test code reads in the image with
> reader.readAsRenderedImage(7, readParam); because the large
> image is the last image on that particular tiff. Of course
> '7' would not work for the subsequent calls to 'subit' but
> the code never gets that far with this image.
>
> br Kusti
>
>
>
>
>
>
>
> java.lang.IllegalArgumentException: width*height >
Integer.MAX_VALUE!
> at
> javax.imageio.ImageReader.getDestination(ImageReader.java:2823)
> at
> com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.read(TI
> FFImageReader.java:1170)
> at
> com.sun.media.imageioimpl.plugins.tiff.TIFFRenderedImage.read(
> TIFFRenderedImage.java:259)
> at
> com.sun.media.imageioimpl.plugins.tiff.TIFFRenderedImage.copyD
> ata(TIFFRenderedImage.java:274)
> at
> javax.media.jai.RenderedImageAdapter.copyData(RenderedImageAda
> pter.java:171)
> at
> javax.media.jai.PlanarImage.copyExtendedData(PlanarImage.java:2411)
> at
> com.sun.media.jai.opimage.BorderOpImage.computeTile(BorderOpIm
> age.java:220)
> at
> com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileSc
> heduler.java:912)
> at javax.media.jai.OpImage.getTile(OpImage.java:1139)
> at
> javax.media.jai.PlanarImage.cobbleByte(PlanarImage.java:2863)
> at javax.media.jai.PlanarImage.getData(PlanarImage.java:2182)
> at
> javax.media.jai.GeometricOpImage.computeTile(GeometricOpImage.
> java:676)
> at
> com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileSc
> heduler.java:912)
> at javax.media.jai.OpImage.getTile(OpImage.java:1139)
> at
> javax.media.jai.PlanarImage.cobbleByte(PlanarImage.java:2863)
> at javax.media.jai.PlanarImage.getData(PlanarImage.java:2182)
> at javax.media.jai.RenderedOp.getData(RenderedOp.java:2287)
> at
> com.sun.media.imageioimpl.plugins.tiff.TIFFImageWriter.writeTi
> le(TIFFImageWriter.java:1754)
> at
> com.sun.media.imageioimpl.plugins.tiff.TIFFImageWriter.write(T
> IFFImageWriter.java:2686)
> at
> com.sun.media.imageioimpl.plugins.tiff.TIFFImageWriter.write(T
> IFFImageWriter.java:2417)
> at renderer.SubSampleTest2.subit(SubSampleTest2.java:94)
> at renderer.SubSampleTest2.main(SubSampleTest2.java:21)
>
>
> package renderer;
>
> import java.io.*;
> import javax.imageio.*;
> import javax.imageio.stream.*;
> import javax.media.jai.*;
> import javax.imageio.metadata.*;
>
> import com.sun.media.imageio.plugins.tiff.*;
> import com.sun.media.jai.codec.*;
> import java.util.*;
> import java.awt.*;
> import java.awt.image.*;
> import java.awt.image.renderable.*;
>
> import javax.imageio.metadata.*;
>
> public class SubSampleTest2 {
> public static void main(String args[]) {
> try {
> subit(new File("./images/world.tif"),
> new File("r0.tif"));
> subit(new File("r0.tif"), new File("r1.tif"));
> subit(new File("r1.tif"), new File("r2.tif"));
> subit(new File("r2.tif"), new File("r3.tif"));
> subit(new File("r3.tif"), new
> File("test-out.tif"));
> } catch (Throwable e) {
> e.printStackTrace();
> }
> }
>
> public static void subit(File sourceFile, File
> destFile) throws IOException {
> long t0 = System.nanoTime();
>
> FileImageOutputStream outputStream = new
> FileImageOutputStream(destFile);
> ImageWriter writer =
> ImageIO.getImageWritersByFormatName("tiff").next();
>
> FileImageInputStream inputStream = new
> FileImageInputStream(sourceFile);
> ImageReader reader = ImageIO.getImageReader(writer);
> reader.setInput(inputStream);
>
> IIOMetadata metadata = reader.getImageMetadata(0);
>
> ImageReadParam readParam =
> reader.getDefaultReadParam();
> RenderedImage inputImg =
> reader.readAsRenderedImage(7, readParam);
>
> ParameterBlock pb;
>
> ImageLayout tileLayout = new ImageLayout(inputImg);
> tileLayout.setTileWidth(256);
> tileLayout.setTileHeight(256);
> RenderingHints tileHints = new
> RenderingHints(JAI.KEY_IMAGE_LAYOUT, tileLayout);
>
> pb = new ParameterBlock();
> pb.addSource(inputImg);
> inputImg = JAI.create("format", pb, tileHints);
>
> pb.addSource(inputImg);
> pb.add(1);
> pb.add(1);
> pb.add(1);
> pb.add(1);
>
> pb.add(BorderExtender.createInstance(BorderExtender.BORDER_COPY));
> pb.add(0);
> inputImg= JAI.create("border", pb);
>
> pb = new ParameterBlock();
> pb.addSource(inputImg);
> pb.add(2).add(2);
> pb.add(new float[] { 0.5F, 1.0F / 3.0F, 0.0F,
> -1.0F / 12.0F ,2});
>
> pb.add(Interpolation.getInstance(Interpolation.INTERP_BICUBIC_2));
> inputImg = JAI.create("filteredsubsample", pb);
>
> writer.setOutput(outputStream);
>
> TIFFImageWriteParam writeParam =
> (TIFFImageWriteParam) writer.getDefaultWriteParam();
>
> writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
> writeParam.setCompressionType("PackBits");
>
writeParam.setTilingMode(ImageWriteParam.MODE_EXPLICIT);
> writeParam.setTiling(256, 256, 0, 0);
>
> IIOImage iioImage = new IIOImage(inputImg,
> null, metadata);
> //writer.prepareWriteSequence(metadata);
> writer.write(metadata, iioImage, writeParam);
> //writer.endWriteSequence();
>
> JAI.getDefaultInstance().getTileCache().flush();
> writer.dispose();
> outputStream.flush();
> outputStream.close();
>
> reader.dispose();
> inputStream.flush();
> inputStream.close();
>
> System.out.println("sub image " +
> inputImg.getWidth() + "x" + inputImg.getHeight() + " time " +
> (System.nanoTime() - t0) / 1000000 / 1000.0 + " sec");
>
> System.out.println("DONE!");
> }
> }
>
>
> TIFF Directory at offset 0x1759a
> Subfile Type: reduced-resolution image (1 = 0x1)
> Image Width: 675 Image Length: 337
> Tile Width: 256 Tile Length: 256
> Bits/Sample: 8
> Compression Scheme: JPEG
> Photometric Interpretation: RGB color
> YCbCr Subsampling: 2, 2
> Copyright: "Frederic Delhoume"
> Image Description: ""
> Orientation: row 0 top, col 0 lhs
> Samples/Pixel: 3
> Planar Configuration: single image plane
> Software: Very Large Image Viewer
> JPEG Tables: (289 bytes)
> TIFF Directory at offset 0x4d9e4
> Subfile Type: reduced-resolution image (1 = 0x1)
> Image Width: 1350 Image Length: 675
> Tile Width: 256 Tile Length: 256
> Bits/Sample: 8
> Compression Scheme: JPEG
> Photometric Interpretation: RGB color
> YCbCr Subsampling: 2, 2
> Orientation: row 0 top, col 0 lhs
> Samples/Pixel: 3
> Planar Configuration: single image plane
> JPEG Tables: (289 bytes)
> TIFF Directory at offset 0xf2cb2
> Subfile Type: reduced-resolution image (1 = 0x1)
> Image Width: 2700 Image Length: 1350
> Tile Width: 256 Tile Length: 256
> Bits/Sample: 8
> Compression Scheme: JPEG
> Photometric Interpretation: RGB color
> YCbCr Subsampling: 2, 2
> Orientation: row 0 top, col 0 lhs
> Samples/Pixel: 3
> Planar Configuration: single image plane
> JPEG Tables: (289 bytes)
> TIFF Directory at offset 0x2f50ee
> Subfile Type: reduced-resolution image (1 = 0x1)
> Image Width: 5400 Image Length: 2700
> Tile Width: 256 Tile Length: 256
> Bits/Sample: 8
> Compression Scheme: JPEG
> Photometric Interpretation: RGB color
> YCbCr Subsampling: 2, 2
> Orientation: row 0 top, col 0 lhs
> Samples/Pixel: 3
> Planar Configuration: single image plane
> JPEG Tables: (289 bytes)
> TIFF Directory at offset 0x9d4a56
> Subfile Type: reduced-resolution image (1 = 0x1)
> Image Width: 10800 Image Length: 5400
> Tile Width: 256 Tile Length: 256
> Bits/Sample: 8
> Compression Scheme: JPEG
> Photometric Interpretation: RGB color
> YCbCr Subsampling: 2, 2
> Orientation: row 0 top, col 0 lhs
> Samples/Pixel: 3
> Planar Configuration: single image plane
> JPEG Tables: (289 bytes)
> TIFF Directory at offset 0x214a4ee
> Subfile Type: reduced-resolution image (1 = 0x1)
> Image Width: 21600 Image Length: 10800
> Tile Width: 256 Tile Length: 256
> Bits/Sample: 8
> Compression Scheme: JPEG
> Photometric Interpretation: RGB color
> YCbCr Subsampling: 2, 2
> Orientation: row 0 top, col 0 lhs
> Samples/Pixel: 3
> Planar Configuration: single image plane
> JPEG Tables: (289 bytes)
> TIFF Directory at offset 0x7351000
> Subfile Type: reduced-resolution image (1 = 0x1)
> Image Width: 43200 Image Length: 21600
> Tile Width: 256 Tile Length: 256
> Bits/Sample: 8
> Compression Scheme: JPEG
> Photometric Interpretation: RGB color
> YCbCr Subsampling: 2, 2
> Orientation: row 0 top, col 0 lhs
> Samples/Pixel: 3
> Planar Configuration: single image plane
> JPEG Tables: (289 bytes)
> TIFF Directory at offset 0x197568b8
> Image Width: 86400 Image Length: 43200
> Tile Width: 256 Tile Length: 256
> Bits/Sample: 8
> Compression Scheme: JPEG
> Photometric Interpretation: RGB color
> YCbCr Subsampling: 2, 2
> Orientation: row 0 top, col 0 lhs
> Samples/Pixel: 3
> Planar Configuration: single image plane
> JPEG Tables: (289 bytes)
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail: interest-unsubscribe@jai-imageio.dev.java.net

> For additional commands, e-mail:
> interest-help@jai-imageio.dev.java.net
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@jai-imageio.dev.java.net
For additional commands, e-mail: interest-help@jai-imageio.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@jai-imageio.dev.java.net
For additional commands, e-mail: interest-help@jai-imageio.dev.java.net

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Nidel, Mike

a few more questions:

what are you setting in your ImageReadParam when reading the TIFF?
What are you setting in your ImageWriteParam?

Are you using subsampling?

> -----Original Message-----
> From: Kustaa Nyholm [mailto:Kustaa.Nyholm@planmeca.com]
> Sent: Wednesday, December 12, 2007 11:53 PM
> To: interest@jai-imageio.dev.java.net
> Subject: RE: [JAI-IMAGEIO] TIFF reader exception:
> width*height > Integer.MAX_VALUE, bug or feature?
>
>
>
> >>> mike.nidel@lmco.com 12.12.2007 22:34:18 >>> You must have
> missed my
> >>>reply last week.
> If you mean your answer (and thank you or answering) about
> the image not being tiled, no, I did not miss it. And I acted
> on it. As far as I can tell everything is tiled. I checked
> this by printing out the tile width / height at every node
> in the chain. Also, the code works for an other image that is 10921 x
> 9533 ie
> about 400 MB which is way more than what the default JVM 64
> MB can handle if not tiled. So I guess it is tiled.
>
> >I think I have a way for you to
> >debug this. You need to get a hold of the LAST image in your chain
> >>before writing to disk. Check if this image is tiled -- do a
> getTileWidth() and
> >getTileHeight() and see if they match your expectations.
>
> Thats what I did.
>
> >My strong suspicion is that your operation chain is constructed in
> such
> >a way that you are untiling the image. If you want to be very
> thorough,
> >print the tile sizes for every RenderedImage/RenderedOp in the chain.
> >If the tile size jumps up at some point, you should set the desired
> tile
> >size in that op by passing in an ImageLayout on the RenderingHints
> under
> >JAI.KEY_IMAGE_LAYOUT.
> Just rechecked this, the tile size is 256 x 256 after each op
> in the chain.
>
> So, still confused, bug or feature?
>
> br Kusti
>
> > -----Original Message-----
> > From: Kustaa Nyholm [mailto:Kustaa.Nyholm@planmeca.com]
> > Sent: Wednesday, December 12, 2007 3:08 PM
> > To: interest@jai-imageio.dev.java.net
> > Subject: RE: [JAI-IMAGEIO] TIFF reader exception:
> > width*height > Integer.MAX_VALUE, bug or feature?
> >
> >
> >
> > >>> mike.nidel@lmco.com 12.12.2007 21:15:12 >>> ok, refresh
> my memory
>
> > >>>again: what's the exact spot where you get
> > the
> > >>>exception from? it's not after readAsRenderedImage() right?
> >
> > The exception happens when the code tries to write out the
> subsampled
> > image.
> >
> > The complete test case and exception trace follows, plus
> I've include
> > the 'tiffinfo' dump for the test file I'm using.
> >
> > Note that the test code reads in the image with
> > reader.readAsRenderedImage(7, readParam); because the large
> image is
> > the last image on that particular tiff. Of course '7' would
> not work
> > for the subsequent calls to 'subit' but the code never gets
> that far
> > with this image.
> >
> > br Kusti
> >
> >
> >
> >
> >
> >
> >
> > java.lang.IllegalArgumentException: width*height >
> Integer.MAX_VALUE!
> > at
> > javax.imageio.ImageReader.getDestination(ImageReader.java:2823)
> > at
> > com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.read(TI
> > FFImageReader.java:1170)
> > at
> > com.sun.media.imageioimpl.plugins.tiff.TIFFRenderedImage.read(
> > TIFFRenderedImage.java:259)
> > at
> > com.sun.media.imageioimpl.plugins.tiff.TIFFRenderedImage.copyD
> > ata(TIFFRenderedImage.java:274)
> > at
> > javax.media.jai.RenderedImageAdapter.copyData(RenderedImageAda
> > pter.java:171)
> > at
> > javax.media.jai.PlanarImage.copyExtendedData(PlanarImage.java:2411)
> > at
> > com.sun.media.jai.opimage.BorderOpImage.computeTile(BorderOpIm
> > age.java:220)
> > at
> > com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileSc
> > heduler.java:912)
> > at javax.media.jai.OpImage.getTile(OpImage.java:1139)
> > at
> > javax.media.jai.PlanarImage.cobbleByte(PlanarImage.java:2863)
> > at javax.media.jai.PlanarImage.getData(PlanarImage.java:2182)
> > at
> > javax.media.jai.GeometricOpImage.computeTile(GeometricOpImage.
> > java:676)
> > at
> > com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileSc
> > heduler.java:912)
> > at javax.media.jai.OpImage.getTile(OpImage.java:1139)
> > at
> > javax.media.jai.PlanarImage.cobbleByte(PlanarImage.java:2863)
> > at javax.media.jai.PlanarImage.getData(PlanarImage.java:2182)
> > at javax.media.jai.RenderedOp.getData(RenderedOp.java:2287)
> > at
> > com.sun.media.imageioimpl.plugins.tiff.TIFFImageWriter.writeTi
> > le(TIFFImageWriter.java:1754)
> > at
> > com.sun.media.imageioimpl.plugins.tiff.TIFFImageWriter.write(T
> > IFFImageWriter.java:2686)
> > at
> > com.sun.media.imageioimpl.plugins.tiff.TIFFImageWriter.write(T
> > IFFImageWriter.java:2417)
> > at renderer.SubSampleTest2.subit(SubSampleTest2.java:94)
> > at renderer.SubSampleTest2.main(SubSampleTest2.java:21)
> >
> >
> > package renderer;
> >
> > import java.io.*;
> > import javax.imageio.*;
> > import javax.imageio.stream.*;
> > import javax.media.jai.*;
> > import javax.imageio.metadata.*;
> >
> > import com.sun.media.imageio.plugins.tiff.*;
> > import com.sun.media.jai.codec.*;
> > import java.util.*;
> > import java.awt.*;
> > import java.awt.image.*;
> > import java.awt.image.renderable.*;
> >
> > import javax.imageio.metadata.*;
> >
> > public class SubSampleTest2 {
> > public static void main(String args[]) {
> > try {
> > subit(new File("./images/world.tif"),
> new File("r0.tif"));
> > subit(new File("r0.tif"), new File("r1.tif"));
> > subit(new File("r1.tif"), new File("r2.tif"));
> > subit(new File("r2.tif"), new File("r3.tif"));
> > subit(new File("r3.tif"), new
> > File("test-out.tif"));
> > } catch (Throwable e) {
> > e.printStackTrace();
> > }
> > }
> >
> > public static void subit(File sourceFile, File
> > destFile) throws IOException {
> > long t0 = System.nanoTime();
> >
> > FileImageOutputStream outputStream = new
> > FileImageOutputStream(destFile);
> > ImageWriter writer =
> > ImageIO.getImageWritersByFormatName("tiff").next();
> >
> > FileImageInputStream inputStream = new
> > FileImageInputStream(sourceFile);
> > ImageReader reader = ImageIO.getImageReader(writer);
> > reader.setInput(inputStream);
> >
> > IIOMetadata metadata = reader.getImageMetadata(0);
> >
> > ImageReadParam readParam =
> > reader.getDefaultReadParam();
> > RenderedImage inputImg =
> > reader.readAsRenderedImage(7, readParam);
> >
> > ParameterBlock pb;
> >
> > ImageLayout tileLayout = new ImageLayout(inputImg);
> > tileLayout.setTileWidth(256);
> > tileLayout.setTileHeight(256);
> > RenderingHints tileHints = new
> > RenderingHints(JAI.KEY_IMAGE_LAYOUT, tileLayout);
> >
> > pb = new ParameterBlock();
> > pb.addSource(inputImg);
> > inputImg = JAI.create("format", pb, tileHints);
> >
> > pb.addSource(inputImg);
> > pb.add(1);
> > pb.add(1);
> > pb.add(1);
> > pb.add(1);
> >
> > pb.add(BorderExtender.createInstance(BorderExtender.BORDER_COPY));
> > pb.add(0);
> > inputImg= JAI.create("border", pb);
> >
> > pb = new ParameterBlock();
> > pb.addSource(inputImg);
> > pb.add(2).add(2);
> > pb.add(new float[] { 0.5F, 1.0F / 3.0F, 0.0F,
> -1.0F / 12.0F ,2});
> >
> > pb.add(Interpolation.getInstance(Interpolation.INTERP_BICUBIC_2));
> > inputImg = JAI.create("filteredsubsample", pb);
> >
> > writer.setOutput(outputStream);
> >
> > TIFFImageWriteParam writeParam =
> > (TIFFImageWriteParam) writer.getDefaultWriteParam();
> >
> > writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
> > writeParam.setCompressionType("PackBits");
> >
> writeParam.setTilingMode(ImageWriteParam.MODE_EXPLICIT);
> > writeParam.setTiling(256, 256, 0, 0);
> >
> > IIOImage iioImage = new IIOImage(inputImg,
> null, metadata);
> > //writer.prepareWriteSequence(metadata);
> > writer.write(metadata, iioImage, writeParam);
> > //writer.endWriteSequence();
> >
> > JAI.getDefaultInstance().getTileCache().flush();
> > writer.dispose();
> > outputStream.flush();
> > outputStream.close();
> >
> > reader.dispose();
> > inputStream.flush();
> > inputStream.close();
> >
> > System.out.println("sub image " +
> > inputImg.getWidth() + "x" + inputImg.getHeight() + " time " +
> > (System.nanoTime() - t0) / 1000000 / 1000.0 + " sec");
> >
> > System.out.println("DONE!");
> > }
> > }
> >
> >
> > TIFF Directory at offset 0x1759a
> > Subfile Type: reduced-resolution image (1 = 0x1)
> > Image Width: 675 Image Length: 337
> > Tile Width: 256 Tile Length: 256
> > Bits/Sample: 8
> > Compression Scheme: JPEG
> > Photometric Interpretation: RGB color
> > YCbCr Subsampling: 2, 2
> > Copyright: "Frederic Delhoume"
> > Image Description: ""
> > Orientation: row 0 top, col 0 lhs
> > Samples/Pixel: 3
> > Planar Configuration: single image plane
> > Software: Very Large Image Viewer
> > JPEG Tables: (289 bytes)
> > TIFF Directory at offset 0x4d9e4
> > Subfile Type: reduced-resolution image (1 = 0x1)
> > Image Width: 1350 Image Length: 675
> > Tile Width: 256 Tile Length: 256
> > Bits/Sample: 8
> > Compression Scheme: JPEG
> > Photometric Interpretation: RGB color
> > YCbCr Subsampling: 2, 2
> > Orientation: row 0 top, col 0 lhs
> > Samples/Pixel: 3
> > Planar Configuration: single image plane
> > JPEG Tables: (289 bytes)
> > TIFF Directory at offset 0xf2cb2
> > Subfile Type: reduced-resolution image (1 = 0x1)
> > Image Width: 2700 Image Length: 1350
> > Tile Width: 256 Tile Length: 256
> > Bits/Sample: 8
> > Compression Scheme: JPEG
> > Photometric Interpretation: RGB color
> > YCbCr Subsampling: 2, 2
> > Orientation: row 0 top, col 0 lhs
> > Samples/Pixel: 3
> > Planar Configuration: single image plane
> > JPEG Tables: (289 bytes)
> > TIFF Directory at offset 0x2f50ee
> > Subfile Type: reduced-resolution image (1 = 0x1)
> > Image Width: 5400 Image Length: 2700
> > Tile Width: 256 Tile Length: 256
> > Bits/Sample: 8
> > Compression Scheme: JPEG
> > Photometric Interpretation: RGB color
> > YCbCr Subsampling: 2, 2
> > Orientation: row 0 top, col 0 lhs
> > Samples/Pixel: 3
> > Planar Configuration: single image plane
> > JPEG Tables: (289 bytes)
> > TIFF Directory at offset 0x9d4a56
> > Subfile Type: reduced-resolution image (1 = 0x1)
> > Image Width: 10800 Image Length: 5400
> > Tile Width: 256 Tile Length: 256
> > Bits/Sample: 8
> > Compression Scheme: JPEG
> > Photometric Interpretation: RGB color
> > YCbCr Subsampling: 2, 2
> > Orientation: row 0 top, col 0 lhs
> > Samples/Pixel: 3
> > Planar Configuration: single image plane
> > JPEG Tables: (289 bytes)
> > TIFF Directory at offset 0x214a4ee
> > Subfile Type: reduced-resolution image (1 = 0x1)
> > Image Width: 21600 Image Length: 10800
> > Tile Width: 256 Tile Length: 256
> > Bits/Sample: 8
> > Compression Scheme: JPEG
> > Photometric Interpretation: RGB color
> > YCbCr Subsampling: 2, 2
> > Orientation: row 0 top, col 0 lhs
> > Samples/Pixel: 3
> > Planar Configuration: single image plane
> > JPEG Tables: (289 bytes)
> > TIFF Directory at offset 0x7351000
> > Subfile Type: reduced-resolution image (1 = 0x1)
> > Image Width: 43200 Image Length: 21600
> > Tile Width: 256 Tile Length: 256
> > Bits/Sample: 8
> > Compression Scheme: JPEG
> > Photometric Interpretation: RGB color
> > YCbCr Subsampling: 2, 2
> > Orientation: row 0 top, col 0 lhs
> > Samples/Pixel: 3
> > Planar Configuration: single image plane
> > JPEG Tables: (289 bytes)
> > TIFF Directory at offset 0x197568b8
> > Image Width: 86400 Image Length: 43200
> > Tile Width: 256 Tile Length: 256
> > Bits/Sample: 8
> > Compression Scheme: JPEG
> > Photometric Interpretation: RGB color
> > YCbCr Subsampling: 2, 2
> > Orientation: row 0 top, col 0 lhs
> > Samples/Pixel: 3
> > Planar Configuration: single image plane
> > JPEG Tables: (289 bytes)
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> interest-unsubscribe@jai-imageio.dev.java.net
>
> > For additional commands, e-mail:
> > interest-help@jai-imageio.dev.java.net
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: interest-unsubscribe@jai-imageio.dev.java.net
> For additional commands, e-mail:
> interest-help@jai-imageio.dev.java.net
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: interest-unsubscribe@jai-imageio.dev.java.net
> For additional commands, e-mail:
> interest-help@jai-imageio.dev.java.net
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@jai-imageio.dev.java.net
For additional commands, e-mail: interest-help@jai-imageio.dev.java.net

Fork Labs

Hello,

Here are the first instructions of method getDestination in ImageReader :

protected static BufferedImage
getDestination(ImageReadParam param,
Iterator imageTypes,
int width, int height)
throws IIOException {
if (imageTypes == null || !imageTypes.hasNext()) {
throw new IllegalArgumentException("imageTypes null or empty!");
}
if ((long)width*height > Integer.MAX_VALUE) {
throw new IllegalArgumentException
("width*height > Integer.MAX_VALUE!");
}

It seems that for any image, whatever the format, there cannot be more
than Integer.MAX_VALUE pixels in it.

Some research about the TIFF format points to :

http://72.14.205.104/search?q=cache:d64SyXh0y-gJ:www.fileformat.info/for...

and

http://www.awaresystems.be/imaging/tiff.html

about the BigTIFF proposal.

Regards,

Daniel Léonard

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@jai-imageio.dev.java.net
For additional commands, e-mail: interest-help@jai-imageio.dev.java.net

Nidel, Mike

No, this is false. for any _BufferedImage_, the max size is
bounded by Integer.MAX_VALUE. There isn't any such limit for a
tiled RenderedImage implementation.

> -----Original Message-----
> From: Fork Labs [mailto:forklabs@gmail.com]
> Sent: Thursday, December 13, 2007 10:39 AM
> To: interest@jai-imageio.dev.java.net
> Subject: Re: [JAI-IMAGEIO] TIFF reader exception:
> width*height > Integer.MAX_VALUE, bug or feature?
>
> Hello,
>
> Here are the first instructions of method getDestination in
> ImageReader :
>
> protected static BufferedImage
> getDestination(ImageReadParam param,
> Iterator imageTypes,
> int width, int height)
> throws IIOException {
> if (imageTypes == null || !imageTypes.hasNext()) {
> throw new IllegalArgumentException("imageTypes
> null or empty!");
> }
> if ((long)width*height > Integer.MAX_VALUE) {
> throw new IllegalArgumentException
> ("width*height > Integer.MAX_VALUE!");
> }
>
>
> It seems that for any image, whatever the format, there
> cannot be more than Integer.MAX_VALUE pixels in it.
>
> Some research about the TIFF format points to :
>
>
> http://72.14.205.104/search?q=cache:d64SyXh0y-gJ:www.fileforma
> t.info/format/tiff/+TIFF+file+format&hl=en&ct=clnk&cd=9&client=opera
>
> and
>
> http://www.awaresystems.be/imaging/tiff.html
>
> about the BigTIFF proposal.
>
> Regards,
>
> Daniel Léonard
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: interest-unsubscribe@jai-imageio.dev.java.net
> For additional commands, e-mail:
> interest-help@jai-imageio.dev.java.net
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@jai-imageio.dev.java.net
For additional commands, e-mail: interest-help@jai-imageio.dev.java.net