【问题标题】:I can't get an ImageReaderByFormatName("jpeg-lossless")我无法获得 ImageReaderByFormatName("jpeg-lossless")
【发布时间】:2011-04-14 19:15:25
【问题描述】:

我正在尝试使用 JAI_ImageIO 库和以下 java 调用来解码无损 jpeg:

ImageIO.getImageReadersByFormatName("jpeg-lossless").hasNext()

结果为“空”。

注意:我已将 JAI_ImageIO jar 安装到我的 jre/lib/ext 目录中。

我不知道JPEG阅读器是否足以阅读无损jpeg,或者是否需要安装另一个阅读器。

当我枚举 FormatNames 时,即:

ImageIO.getReaderFormatNames()

我得到以下格式:

[raw, jpeg, tif, WBMP, PNM, JPG, DICOM, wbmp, JPEG, PNG, jpeg 2000, 
tiff, BMP, JPEG2000, RAW, jpeg2000, GIF, TIF, TIFF, jpg, bmp, pnm, 
png, JPEG 2000, gif]

当我尝试使用 JPEG2000 阅读器时,出现以下运行时异常:

java.lang.RuntimeException: File is neither valid JP2 file nor valid JPEG 2000 codestream
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KReadState.initializeRead(J2KReadState.java:696)
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KReadState.<init>(J2KReadState.java:209)
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReader.read(J2KImageReader.java:449)
at javax.imageio.ImageReader.read(ImageReader.java:940)

当我尝试时

ImageIO.read(file)

我直接得到一个 org.dcm4cheri.image.ConfigurationException。

【问题讨论】:

  • 无损 JPEG 是否需要单独的阅读器?我认为这样做的好处是任何 JPEG 阅读器都可以读取该文件。
  • JPEG 和 JPEG 2000 是完全不同的格式,只是名称相似。它们都有无损模式。

标签: java image-processing jpeg dicom


【解决方案1】:

好的,我找到了我的特定问题的答案,我相信它会解决如何在基于 *NIX 的操作系统上正确安装 JAI_ImageIO 的更普遍的问题。

在阅读了以下内容 (Obscure place on the WWW) 并尝试了 here 中描述的所有 3 种 JAI_ImageIO 安装替代方案之后。 (我还应该提到我在 Debian 6.0 64 位平台上运行。)

在解决了manual“安装类型”之后,我意识到我的 LD_LIBRARY_PATH 变量没有被拾取。所以我决定强制解决这个问题,并在我的 /usr/lib 中添加一个指向 libclib_jiio.so 的软链接。瞧,它奏效了。

我使用here 提供的代码来确定我的 JAI_ImageIO 是否安装正确,安装正确后,您应该会在输出中看到“JPEG-LOSSLESS”格式/提供程序!

感谢您的建议。我将尝试扩展问题,使其更普遍地解决安装 JAI_ImageIO pro 的问题

【讨论】:

  • 您能逐步解释一下您的解决方案吗?我没听懂。
  • 是的,如果在这种情况下安装了 jai,它会起作用...没有 jai 我有什么办法吗?因为如果我使用 jai 本机库,它会使我的应用程序崩溃......@Reuben Peter-Paul
【解决方案2】:

我认为 jpeg-lossless 不是 JAI 的有效格式。尝试列出您可用的格式:

String[] formats =  ImageIO.getReaderFormatNames();
for ( String format : formats ) {
    System.out.println(format);
}

我认为你真正想要的是“JPEG2000”。

您是否也尝试过 ImageIO.read(file)。如果您安装了 JAI,那应该会成功读取 DICOM 文件。

【讨论】:

  • 谢谢,但没有骰子。我正在根据您的建议的结果扩展问题。
  • JPEG2000 具有无损模式,但它与 JPEG 无损模式是分开的。两种完全不同的动物。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
相关资源
最近更新 更多