Java影像图片转换(dcm4che)NoClassDefFoundError: com/sun/media/imageio/stream/StreamSegmentMapper

问题

在dcom文件进行转换成jpg时候报错

Caused by: java.lang.NoClassDefFoundError: com/sun/media/imageio/stream/StreamSegmentMapper
    at org.dcm4che2.imageioimpl.plugins.dcm.DicomImageReaderSpi.createReaderInstance(DicomImageReaderSpi.java:146) ~[dcm4che-imageio-2.0.27.jar:?]
    at javax.imageio.spi.ImageReaderSpi.createReaderInstance(ImageReaderSpi.java:320) ~[?:1.8.0_25]
    at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:529) ~[?:1.8.0_25]
    at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:513) ~[?:1.8.0_25]
    at cn.qzzg.util.Dcm2Jpeg.convert(Dcm2Jpeg.java:78) ~[classes/:?]
引用的pom包
        <dependency>
            <groupId>dcm4che</groupId>
            <artifactId>dcm4che-core</artifactId>
            <version>2.0.29</version>
        </dependency>
        <dependency>
            <groupId>dcm4che</groupId>
            <artifactId>dcm4che-image</artifactId>
            <version>2.0.29</version>
        </dependency>
        <dependency>
            <groupId>dcm4che</groupId>
            <artifactId>dcm4che-imageio</artifactId>
            <version>2.0.29</version>
        </dependency>
DOCM文件转换
public void convert(File src, File dest) throws IOException {
        if (dest.getParent() != null) {
            File dir = new File(dest.getParent());
            if (!dir.exists()) {
                dir.mkdirs();
            }
        }
        Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM");
        ImageReader reader = iter.next();
        DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam();
        param.setWindowCenter(center);
        param.setWindowWidth(width);
        param.setVoiLutFunction(vlutFct);
        param.setPresentationState(prState);
        param.setPValue2Gray(pval2gray);
        param.setAutoWindowing(autoWindowing);
        ImageInputStream iis = ImageIO.createImageInputStream(src);
        BufferedImage bi;
        OutputStream out = null;
        try {
            reader.setInput(iis, false);
            bi = reader.read(frame - 1, param);
            if (bi == null) {
                System.out.println("\nError: " + src + " - couldn't read!");
                return;
            }
            out = new BufferedOutputStream(new FileOutputStream(dest));
            JPEGImageEncoder enc = JPEGCodec.createJPEGEncoder(out);
            enc.encode(bi);
        } finally {
            CloseUtils.safeClose(iis);
            CloseUtils.safeClose(out);
        }
    }

解决

jdk换成 32位,tomcat换成32位即可
Tomcat32位地址:https://download.csdn.net/download/u010520146/10663989
JDK 32位地址:https://download.csdn.net/download/u010520146/10664001

猜你喜欢

转载自blog.csdn.net/u010520146/article/details/82685169