How to read TIFF file using tiles using Java?

Say I have a very large TIFF image as input. I cannot fully download this image due to the memory specification that I must adhere to. Therefore, the following is not an option:

BufferedImage data = ImageIO.read(image);

Is there any Java library that allows you to read a specific part of an image without buffering the entire image? Or some ways to get TIFF slabs from a stream?

+4
source share
3 answers

ImageIO can provide you with ImageReader for Tiff, and then you can use readTile . ImageIO has several methods getImageReadersBy....

, TIFI ImageIO, ImageIO java SPI, ImageReaders ImageWriters.

read ImageReadParam, .

, , , .

+6

Java- Tiff .... , .

@Joop Java, ( !) , , :

Tiff . .

Java JAI , TIFF. :

+1

@Joop:

ImageIO ImageReader ImageReadParam (ImageReadParam.setSourceRegion(rect)), . , , TIFF ( , ).

:

ImageReader reader = ImageIO.getImageReaders(input).next(); 
reader.setInput(input);

ImageReadParam param = reader.getDefaultReadParam();
param.setSourceRegion(new Rectangle(x, y, w, h));

BufferedImage aoi = reader.read(0, param);

However, reading tile images on tiles is probably the most efficient way to achieve what you requested using the TIFF format :-)

+1
source

All Articles