将DICOM图像转换为JPEG图像
我的代码是
import java.awt.image.BufferedImage;import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import org.dcm4che2.imageio.plugins.dcm.DicomImageReadParam;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class DicomToJpeg {
public static void main(String args[]) throws IOException, Exception
{
dicomToJpeg("d:/F74AFBC7");
}
public static void dicomToJpeg(String args) throws IOException, Exception {
// TODO Auto-generated method stub
try
{
File myDicomFile = new File(args);
BufferedImage myJpegImage = null;
Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM");
ImageReader reader = (ImageReader) iter.next();
DicomImageReadParam param = null;
try{
param = (DicomImageReadParam) reader.getDefaultReadParam();
}
catch (Exception e) {
e.printStackTrace();
}
ImageInputStream iis=ImageIO.createImageInputStream(myDicomFile);
reader.setInput(iis, false);
myJpegImage = reader.read(0, param);
iis.close();
if (myJpegImage == null) {
System.out.println("\nError: couldn't read dicom image!");
return;
}
File myJpegFile = new File("d:/demo.jpg");
OutputStream output = new BufferedOutputStream(new FileOutputStream(myJpegFile));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(myJpegImage);
System.out.println("Image Create successufully");
output.close();
}
catch(IOException e){
System.out.println("\nError: couldn't read dicom image!"+ e.getMessage());
return;
}
}
}
当我使用eclipse在Java项目中执行时,它工作正常…但是当我使用Web应用程序执行时,在此我从控制器页面调用它,例如
DicomToJpeg.dicomToJpeg(“ d:/ F74AFBC7”);
然后它给出了类似…的错误
java.util.NoSuchElementException at javax.imageio.spi.FilterIterator.next(Unknown Source)
at javax.imageio.ImageIO$ImageReaderIterator.next(Unknown Source)
at javax.imageio.ImageIO$ImageReaderIterator.next(Unknown Source)
at com.lifecare.controller.DicomToJpeg.dicomToJpeg(DicomToJpeg.java:32)
如何解决此错误,请帮帮我....
回答:
ImageIO.getImageREadersByFormatName的Javadoc说:
返回一个Iterator,它包含所有当前已注册的ImageReader,这些ImageReader声称能够解码指定的格式。
如果在不检查迭代器是否包含元素的情况下访问迭代器,则会得到异常。
由于它是在您的IDE中而不是在服务器上运行的,因此您可以查看一下DICOM的图像读取器是否在服务器上应用程序的类路径中。
但是,我也想知道您如何称呼以上课程。是来自servlet吗?
以上是 将DICOM图像转换为JPEG图像 的全部内容, 来源链接: utcz.com/qa/401199.html