0

我正在尝试在一个新的 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
4

1 回答 1

0

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

另请参阅:用于 64 位 Windows 的 JAI 和 ImageIO

于 2015-08-04T16:21:14.447 回答