【问题标题】:Why does the conversion of Dicom file into a JPEG image fail with dcm4che 2.0.29?为什么使用 dcm4che 2.0.29 将 Dicom 文件转换为 JPEG 图像失败?
【发布时间】:2015-08-03 16:26:14
【问题描述】:

我正在尝试在一个新的 DICOM 项目中使用 dcm4che(最新版本 2.0.29)。 尝试将 DICOM 文件转换为 jpeg 时出现以下错误。 我找不到包含 com.sun.medialib.codec.jpeg.Decoder 类的 jar 文件。 谁能告诉我在哪里可以找到它?

我安装了 jai 1.1.2.01(在 oracle 的下载页面找到的最新版本) 我用 java 6、7 和 8 进行了探索。

这是我的代码:

    public static void main(String[] args) {
    try {

        //com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader
        //com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader

        ImageIO.scanForPlugins();
        IIORegistry reg = IIORegistry.getDefaultInstance();
        reg.registerApplicationClasspathSpis();

        CLibJPEGImageReaderSpi prov = new com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReaderSpi();
        System.out.println("prov: "+prov.getClass().getName());
        System.out.println("prov: "+prov.getPluginClassName()+" ("+prov.getDescription(Locale.US)+")");
        for (String t:prov.getMIMETypes()){
            System.out.println("MIME: "+t);
        }
        reg.registerServiceProvider(prov, ImageReaderSpi.class);
        Dcm2Jpg dcm2jpg=new Dcm2Jpg();

        File origen=new File("c:/tmp/dicom/2.25.140624125599408099713879344899488955633.dcm");
        File destino=new File("c:/tmp/dicom/prueba.jpg");
        dcm2jpg.convert(origen, destino);

这里是控制台输出:

javax.imageio.IIOException: codecLib error
at com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader.getInfoImage(CLibJPEGImageReader.java:207)
at com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader.getImageTypes(CLibJPEGImageReader.java:274)
at javax.imageio.ImageReader.getRawImageType(ImageReader.java:665)
at com.sun.media.imageioimpl.plugins.clib.CLibImageReader.read(CLibImageReader.java:571)
at org.dcm4che2.imageioimpl.plugins.dcm.DicomImageReader.read(DicomImageReader.java:778)
at org.dcm4che2.tool.dcm2jpg.Dcm2Jpg.convert(Dcm2Jpg.java:175)
at es.cimkey.dicomclient.DicomClient.main(DicomClient.java:94)
Caused by: java.lang.NoClassDefFoundError: com/sun/medialib/codec/jpeg/Decoder
    at com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader.getInfoImage(CLibJPEGImageReader.java:199)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: com.sun.medialib.codec.jpeg.Decoder
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 7 more

【问题讨论】:

  • "引起:java.lang.NoClassDefFoundError: com/sun/medialib/codec/jpeg/Decoder" ?
  • 是的,从我的标准输出文本复制。
  • 您在设置中使用的是哪个版本的 dcm4che - 请提供它的确切版本。顺便说一句,您使用的是哪个操作系统? “java -version”输出的结果是什么。请提供更多信息。
  • 我正在使用 dcm4che 2.0.29,在 windows 8.1 64bit 和 windows 2008 32bit 中使用 dcm4che 2.0.29 得到了相同的结果。
  • java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

标签: java jpeg dcm4che


【解决方案1】:

JAI 不适用于 64 位 Windows Java。尝试在 64 位 Windows 机器上使用 32 位 JRE。

另请参阅:JAI and ImageIO for 64 bit Windows

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2017-11-07
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多