使用imageio编写jpeg2000的问题

时间:2012-09-23 09:15:47

标签: java dicom javax.imageio jpeg2000

我正在尝试使用imageio在jpeg2000中转换DICOM图像,如下面的代码所示,oracle文档中解释了相同的过程,但不起作用!我不明白我做错了什么。 Java高级映像I / O库已安装到JRE中。

使用:ImageIO.getReaderFormatNames()ImageIO.getWriterFormatNames()可以验证是否支持DICOM和JPEG2000!

没有抛出错误,但写入文件需要很长时间,输出文件已损坏 提前谢谢你......

 public void convert2JPEG(File sourceFileName) throws IOException{

    Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM");
    ImageReader reader = iter.next();

    if(reader == null) {
        log.error("Could not locate any Readers for the DICOM format image.");
        return;
    }

    File sourceFile = new File (sourceFileName);
    ImageInputStream iis = ImageIO.createImageInputStream(sourceFile);
    BufferedImage bi;
    try{
    bi = ImageIO.read(iis);
        File outputFile = new File("outputFileName");
    String format = "jpeg 2000";
    ImageIO.write(bi, format, outputFile);
    } catch(Exception e){
        log.info("ERROR: " + e);
    }finally {
        iis.close();
    }
}

1 个答案:

答案 0 :(得分:1)

JAI Image IO不支持DICOM,但支持JPEG2000。请注意,没有Windows 64位版本的JAI(这也可能是一个问题)。我很惊讶它没有给出任何错误。

但是,我同意Anders的观点,转换DICOM的最佳方法是使用工具包。我建议使用DCM4CHE2(http://www.dcm4che.org/confluence/display/d2/dcm4che2+DICOM+Toolkit)。他们有许多命令行工具可以完全按照你的建议进行操作,还有Dicom [输入/输出] Stream类用于读写DICOM。