java - 从Java中的非常大的图像文件中读取区域

标签 java image-processing jai

是否有一个 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 - 从Java中的非常大的图像文件中读取区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18466513/

相关文章:

matlab - 图像处理中的平均掩模和拉普拉斯掩模

java - Java 32 位对 Win(任何)64 位的影响?

java - TIFFPackBitsCompressor - NPE?

c++ - 如何使用二维矩形缓冲区沿二维线段限制搜索空间

java - 使用调色板从 TIFF 获取像素颜色索引

java - 如何构造 JFrame 子类?

java - java中的日期类错误

java - 查找数组列表中的最小值

java - 矩阵与浮点opencv android的乘法

image-processing - 什么是inception和vgg16的输出维度