【发布时间】:2015-01-06 00:57:16
【问题描述】:
我正在寻找一种在 Java 中读取压缩 DICOM 文件的方法。 DICOM 使用 Jpeg2000 压缩。 Java 高级图像 IO 在 MAC OS 中没有库,所以我在使用使用它的 DCM4CHE 时遇到了麻烦。 ImageJ 也不支持压缩的 DICOM 文件。
File myDicomFile = new File("IM-0001-0001.dcm");
try {
DicomInputStream dis = new DicomInputStream(myDicomFile);
Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM");
ImageReader reader = (ImageReader) iter.next();
DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam();
ImageInputStream iis = ImageIO.createImageInputStream(myDicomFile);
reader.setInput(iis, false);
BufferedImage bi = reader.read(0, param);
File myJpegFile = new File("IM-0001-0001.jpg");
OutputStream output = new BufferedOutputStream(new FileOutputStream(myJpegFile));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(bi);
output.close();
} catch (Exception e) {
System.out.println(e.getStackTrace());
}
上述代码适用于未压缩的 DICOM,但使用压缩的 DICOM 时会出现以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.sun.medialib.codec.jp2k.Decoder.decode_init(Ljavax/imageio/stream/ImageInputStream;J)J
at com.sun.medialib.codec.jp2k.Decoder.decode_init(Native Method)
at com.sun.medialib.codec.jp2k.Decoder.<init>(Decoder.java:53)
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KRenderedImageCodecLib.<init>(J2KRenderedImageCodecLib.java:158)
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderCodecLib.read(J2KImageReaderCodecLib.java:367)
at org.dcm4che3.imageio.plugins.dcm.DicomImageReader.read(DicomImageReader.java:284)
at Main.main(Main.java:31)
任何建议都将不胜感激。
【问题讨论】: