从Java中的超大图像文件读取区域

是否有一个Java库可以读取很大图像(例如JPEG)文件(> 10,000 x 10,000像素)的区域,而无需将整个图像保留在内存中。

或者,哪个Java库能够以最小的开销处理非常大的图像文件。

回答:

标准ImageIO允许您读取(大)图像区域,而无需先将整个图像读取到内存中。

Rectangle sourceRegion = new Rectangle(x, y, w, h); // The region you want to extract

ImageInputStream stream = ImageIO.createImageInputStream(input); // File or input stream

Iterator<ImageReader> readers = ImageIO.getImageReaders(stream);

if (readers.hasNext()) {

ImageReader reader = readers.next();

reader.setInput(stream);

ImageReadParam param = reader.getDefaultReadParam();

param.setSourceRegion(sourceRegion); // Set region

BufferedImage image = reader.read(0, param); // Will read only the region specified

}

以上是 从Java中的超大图像文件读取区域 的全部内容, 来源链接: utcz.com/qa/399625.html

回到顶部