1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
public static DicomInfo extractDicomData(File file, File tempDirectory) {
LogFile.getInstance().log("info", "start extractDicomData method");
DicomInfo dicomInfo = new DicomInfo();
try {
BufferedImage image = null;
LogFile.getInstance().log("info", "BufferedImage image = null;");
ImageIO.scanForPlugins();
LogFile.getInstance().log("info", " ImageIO.scanForPlugins();");
Iterator iterator = ImageIO.getImageReadersByFormatName("DICOM");
LogFile.getInstance().log("info", "ImageIO.getImageReadersByFormatName(\"DICOM\");");
ImageReader reader = (ImageReader) iterator.next();
DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam();
LogFile.getInstance().log("info", " DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam();");
ImageInputStream iis = ImageIO.createImageInputStream(file);
reader.setInput(iis, false);
LogFile.getInstance().log("info", "reader.setInput(iis, false);");
image = reader.read(0, param);
iis.close();
if (image == null) {
LogFile.getInstance().log("error", "couln't read dicom image!");
return null;
}
File jpegFile = File.createTempFile("dicom", ".jpg", tempDirectory);
LogFile.getInstance().log("info", "Temp file : " + jpegFile.getAbsolutePath());
OutputStream output = new BufferedOutputStream(new FileOutputStream(jpegFile));
ImageWriter writer = null;
Iterator iter = ImageIO.getImageWritersByFormatName("jpg");
writer = (ImageWriter) iter.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(output);
writer.setOutput(ios);
ImageWriteParam iwparam = new JPEGImageWriteParam(Locale.getDefault());
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwparam.setCompressionQuality(Float.parseFloat(PropertiesCache.getInstance().getProperty("CompressionQuality")));
writer.write(null, new IIOImage(image, null, null), iwparam);
ios.flush();
writer.dispose();
ios.close();
output.close();
dicomInfo.setImage(jpegFile);
dicomInfo.setSourcePath(file);
} catch (Exception ex) {
LogFile.getInstance().log("error", "No image available in this dicom file " + file.getName());
LogFile.getInstance().log("Exception", ex.getMessage());
return null;
}
try {
DicomInputStream dicomInputStream = new DicomInputStream(file);
DicomObject object = dicomInputStream.readDicomObject();
dicomInfo.setStudyDate((Date) getMetaData(object, "Study Date", Types.DATE));
dicomInfo.setStudyDescription((String) getMetaData(object, "Study Description", Types.VARCHAR));
dicomInfo.setPatientName((String) getMetaData(object, "Patients Name", Types.VARCHAR));
dicomInfo.setPatientId((Long) getMetaData(object, "Patient ID", Types.BIGINT));
dicomInfo.setPatientBirthdate((Date) getMetaData(object, "Patients Birth Date", Types.DATE));
dicomInfo.setPatientSex((String) getMetaData(object, "Patients Sex", Types.VARCHAR));
} catch (IOException ex) {
LogFile.getInstance().log("error", "unable to get METADATA");
LogFile.getInstance().log("Exception", ex.getMessage());
}
return dicomInfo;
} |
Partager