gpt4 book ai didi

javax.imageio.ImageReader 一遍又一遍地加载相同的图像

转载 作者:行者123 更新时间:2023-11-30 04:15:27 24 4
gpt4 key购买 nike

我有一些代码使用 ImageReader 类读取大量 TIF 图像。 imageReader 对象是最终对象,并在构造函数中创建。

synchronized(imageReader) {
LOG.debug(file);
FileInputStream fin = new FileInputStream(file);
ImageInputStream iis = ImageIO.createImageInputStream(fin);
imageReader.setInput(iis, false);
int sourceXSubSampling = targetSize == null ?
1 : Math.max(1, imageReader.getWidth(0) / targetSize.width);
int sourceYSubSampling = targetSize == null ?
1 : Math.max(1, imageReader.getHeight(0) / targetSize.height);
ImageReadParam subSamplingParam = new ImageReadParam();
subSamplingParam.setSourceSubsampling(sourceXSubSampling, sourceYSubSampling, 0, 0);
return imageReader.read(0, subSamplingParam);
}

大约有四分之一的 ImageReader 会“卡在”它加载的第一个图像上,并且不断地一遍又一遍地加载相同的图像,即使它提供了不同的 ImageInputStreams。记录器的输出证明了这一点。

我该如何解决这个问题。我正在考虑获取图像的“指纹”,并从迭代器中获取不同的 ImageReader(如果发生这种情况),但这似乎有点矫枉过正。有谁知道如何解决这个问题吗?

最佳答案

正如@MadProgrammer在评论部分所说,读取多个图像的典型模式是为每个图像获取一个新的ImageReader,然后dispose()它。与实际读取图像相比,创建读取器实例所花费的时间/内存非常少。因此任何性能损失都可以忽略不计。

但是,从理论上讲,在每次读取之前/之后调用ImageReader上的reset()就足够了。

关于javax.imageio.ImageReader 一遍又一遍地加载相同的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18521599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com