在使用ImageIo将DCM转换为jpg时,我被1.2.840.10008.1.2.4.70 - JPEG Lossless, Non-Hierarchical, First-Order Prediction卡住了。
我已经按照here的指示安装了JAI ImageIO,而ImageIO.getReaderFormatNames()正在提供raw jpeg tif JFIF WBMP jpeg-lossless jpeg-ls PNM JPG DICOM wbmp PNG JPEG dicom jpeg 2000 tiff BMP JPEG2000 RAW JPEG-LOSSLESS jpeg2000 GIF TIF TIFF jpg bmp pnm jfif png JPEG 2000 gif JPEG-LS。
然而,在使用reader读取缓冲图像时,我在线程"main":java.lang.IndexOutOfBoundsException: imageIndex out of bounds中得到异常。这是我的阅读器代码:
ByteArrayInputStream bais = new ByteArrayInputStream(dicomData); //byte array of DICOM data
ImageIO.scanForPlugins();
Iterator<ImageReader> iter = ImageIO
.getImageReadersByFormatName("jpeg-lossless");
ImageReader reader = (ImageReader) iter.next();
ImageReadParam param = (ImageReadParam) reader.getDefaultReadParam();
ImageInputStream iis = ImageIO.createImageInputStream(bais);
reader.setInput(iis, false);
BufferedImage buff = reader.read(0, param); // Error at this line 'imageIndex out of bounds!'
iis.close(); 这是做这件事的正确方式还是其他方式?
发布于 2014-12-31 23:30:24
不能使用jpeg无损ImageReader读取dicom part 10文件。您应该考虑使用dcm4che imageio ImageReader来读取该文件。当它实际到达内容的像素数据部分时,它将利用JAI jpeg图像阅读器来解压缩图像内容。
http://www.dcm4che.org/confluence/display/d2/dcm4che2+DICOM+Toolkit
https://stackoverflow.com/questions/26072939
复制相似问题