【问题标题】:ImageIO support for raw images (jrawio)ImageIO 支持原始图像 (jrawio)
【发布时间】:2013-06-17 22:36:12
【问题描述】:

我一直在寻找原始图像支持,发现这个库 (jrawio-1.6.1) 扩展了 imageio 以添加原始支持。它似乎工作,但非常缓慢。我见过速度更快的蜗牛。我的代码在几秒钟内处理 Jpeg,处理一个不大的 .cr2 文件或 .nef 需要几分钟。我可能是错的,但我认为它甚至减慢了 tiff 处理速度。最后一个 tiff 文件非常大,所以这也可能是问题所在。

我对这个库的另一个问题是,开发似乎在 2009 年就停止了。

我的替代方案是什么?我尝试包含 JAI,但某些库在导出到可执行 jar 后会导致应用程序崩溃。

似乎问题出在 imgScalr 因为它的调整大小和旋转速度很慢。

尼康 D300 的 11.6MB nef 文件需要 1 分 35 秒才能调整到 20%,需要 38 分才能将图像旋转 90 度。

但这对我来说毫无意义,因为这些图像被旋转和调整为 bufferedImages 而不是它们的原始格式。这可能是 imgScalr 的大小问题吗?

显然它与图像颜色类型有关。如果我将图像转换为 RGB,则调整大小和旋转速度很快,但转换为 RGB 需要很长时间。我正在使用 ColorConvertOp 进行转换。

【问题讨论】:

  • 你找到的库是什么?
  • @Java Devil 对不起,它在标题中,但 SO 不接受标题。我会将其添加到问题正文中。
  • 真的吗?对我来说很好。非常快地读取 8mg RAW 网络文件,实际上保存 jpeg 或 png 文件需要更长的时间
  • 是的,看起来问题出在 imgScalr 上。

标签: java image-processing jai javax.imageio imgscalr


【解决方案1】:

看来 jrawio 库不是问题所在。问题是原始图像的颜色格式。 Scalr 处理 ARGB 或 RGB 颜色格式的速度要快得多,如果在修改图像之前将图像转换为 ARGB 或 RGB,则修改速度将与 JPEG 一样快。但是,转换本身需要的时间与修改之一一样长。

【讨论】:

  • ImgScalr 实际上会在调整大小之前将文件转换为 RGB,所以这就是它需要这么长时间的原因。只需使用不同的大小库,因为 ImgScalr 只是调用 Java2D 代码。
  • 您是否尝试过使用更标准的颜色/像素格式向 ImageReadParam 提供目标图像?查看ImageReader.getImageTypes(int) 以获取可能的值,并查看ImageReadParam.setDestination(BufferedImage)/setDestinationType(ImageTypeSpecifier) 以设置实际目的地(类型)。可能会使事情变得更快(或者只是将耗时的部分转移到阅读中......)。
  • @Bailey 还有哪些其他尺寸库可用。我知道 JAI,但还有什么?
  • 请随意尝试Java port of fzoom/ImageMagick'sresize.c。不确定它对 ImgScalr 的表​​现如何,但它产生了不错的结果。
猜你喜欢
  • 2011-11-02
  • 2011-08-22
  • 2021-10-19
  • 2013-05-09
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
相关资源
最近更新 更多