我正在尝试使用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();
}
}
答案 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。