簡體   English   中英

獲取ImageReader解析DICOM圖像時出錯

[英]Error getting ImageReader parsing DICOM image

我嘗試實現示例代碼以從DicomObject獲取圖像:

import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import org.dcm4che2.data.DicomObject;
import org.dcm4che2.imageio.plugins.dcm.DicomImageReadParam;
import org.dcm4che2.io.DicomOutputStream;

....

public static BufferedImage getPixelDataAsBufferedImage(byte[] dicomData)
        throws IOException {
    ByteArrayInputStream bais = new ByteArrayInputStream(dicomData);
    BufferedImage buff = null;
    Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM");
    ImageReader reader = (ImageReader) iter.next();
    DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam();
    ImageInputStream iis = ImageIO.createImageInputStream(bais);
    reader.setInput(iis, false);
    buff = reader.read(0, param);
    iis.close();
    if (buff == null) {
        throw new IOException("Could not read Dicom file. Maybe pixel data is invalid.");
    }
    return buff;
}

當ImageReader reader =(ImageReader)iter.next(); 我有:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/media/imageio/stream/StreamSegmentMapper
at org.dcm4che2.imageioimpl.plugins.dcm.DicomImageReaderSpi.createReaderInstance(DicomImageReaderSpi.java:146)
at javax.imageio.spi.ImageReaderSpi.createReaderInstance(ImageReaderSpi.java:320)
at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:529)
at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:513)
at dcm4.dcmTools.loadImage(dcmTools.java:61)
at dcm4.Dcm4.main(Dcm4.java:87)
Caused by: java.lang.ClassNotFoundException: com.sun.media.imageio.stream.StreamSegmentMapper
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 6 more

有誰知道怎么了??? 我在Windows7 64上使用JDK7 64

給定的異常表明您對Java Advanced Imaging(JAI)具有運行時依賴性。 您需要標准JDK未提供的其他JAR。

這是JAIJAI ImageIO Tools的安裝說明:

http://download.java.net/media/jai/builds/release/1_1_3/INSTALL.html#Windows
http://download.java.net/media/jai-imageio/builds/release/1.1/INSTALL-jai_imageio.html#Windows

您可以在此處下載安裝程序:

http://download.java.net/media/jai/builds/release/1_1_3/
http://download.java.net/media/jai-imageio/builds/release/1.1/

一旦安裝了JAI,您將需要在項目類路徑中包含提取的JAR。

Maven的

如果使用Maven,則無需安裝程序即可將JAI和JAI ImageIO工具用於您的項目:

<dependency>
    <groupId>com.sun.media</groupId>
    <artifactId>jai_imageio</artifactId>
    <version>1.1</version>
</dependency>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM