Java 使用imageio编写jpeg2000时出现的问题

Java 使用imageio编写jpeg2000时出现的问题,java,dicom,javax.imageio,jpeg2000,Java,Dicom,Javax.imageio,Jpeg2000,我正在尝试使用imageio转换jpeg2000中的DICOM图像,如下代码所示,oracle文档中解释了相同的过程,但不起作用!我不明白我做错了什么。Java高级映像I/O库已安装到JRE中 使用:ImageIO.getReaderFormatNames()和ImageIO.getWriteerformatNames()可以验证是否支持DICOM和JPEG2000 没有抛出错误,但写入文件的时间太长,并且输出文件已损坏。 提前谢谢你 public void convert2JPEG(File

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

使用:
ImageIO.getReaderFormatNames()
ImageIO.getWriteerformatNames()
可以验证是否支持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();
    }
}
public void convert2JPEG(文件源文件名)引发IOException{
迭代器iter=ImageIO.getImageReadersByFormatName(“DICOM”);
ImageReader=iter.next();
如果(读卡器==null){
log.error(“找不到DICOM格式图像的任何读卡器。”);
返回;
}
File sourceFile=新文件(sourceFileName);
ImageInputStream iis=ImageIO.CreateMageInputStream(源文件);
缓冲图像bi;
试一试{
bi=图像IO.read(iis);
File outputFile=新文件(“outputFileName”);
字符串格式=“jpeg 2000”;
写入(bi、格式、输出文件);
}捕获(例外e){
日志信息(“错误:+e”);
}最后{
iis.close();
}
}

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


然而,我同意Anders的观点,即转换DICOM的最佳途径是使用工具包。我建议使用DCM4CHE2()。他们有许多命令行工具,可以完全按照您的建议执行操作,还有Dicom[Input/Output]流类用于读取和写入Dicom。

Java SE 7中支持的图像格式是JPEG、PNG、GIF和(W)BMP(调用
ImageIO.getReader/WritePerformatNames()
)。您能解释一下您是如何得出支持DICOM和JPEG2000的结论的吗?@AndersGustafsson:我想提问者已经安装了Java高级图像I/O库。这增加了读写TIFF和JPEG2000的能力,但我不确定DICOM是否正确。@LukeWoodward感谢您的澄清。一般来说,我建议使用DICOM工具包来促进这种类型的转换。我认为David Clunie的开源Java DICOM工具包能够以JPEG2000格式编写图像。@AndersGustafsson感谢您的回答。pixelmed不支持编写jpeg2000!你还有别的想法吗?