0
在前面的問題我前一段時間問,我可以寫一個圖像DICOM的,但現在我需要寫在幀中的兩個或更多的JPG圖像作爲序列中迪康file.Using dcm4che3.Please誰能幫助?我怎麼能寫一個以上的JPG圖像DICOM文件使用Dcm4che3?
public static void main(String[] args) throws Exception {
Attributes attrs = new Attributes();
String ts = UID.JPEG2000;
Attributes fmi = Attributes.createFileMetaInformation("1.2.3", UID.MRImageStorage , ts);
File f = new File("/tmp/taylor.jpg");
BufferedImage vf = ImageIO.read(f);
attrs.setString(Tag.PatientName, VR.AE, "Test");
attrs.setString(Tag.PatientSex, VR.CS, "M");
attrs.setString(Tag.PatientID, VR.CS, "10");
attrs.setString(Tag.PatientBirthDate, VR.AS, "19861010");
attrs.setString(Tag.StudyDate, VR.AS, "20140126");
attrs.setString(Tag.SeriesDate, VR.AS, "20140126");
attrs.setString(Tag.StudyTime, VR.AS, "101010");
attrs.setString(Tag.SeriesTime, VR.AS, "101010");
attrs.setString(Tag.StudyDescription, VR.AS, "Test #1");
attrs.setString(Tag.SeriesDescription, VR.AS, "Test #2");
attrs.setString(Tag.Modality, VR.CS, "MR");
attrs.setInt(Tag.Columns, VR.US, vf.getWidth());
attrs.setInt(Tag.Rows, VR.US, vf.getHeight());
attrs.setInt(Tag.InstanceNumber, VR.US, 1);
attrs.setInt(Tag.SamplesPerPixel, VR.IS, 3);
attrs.setString(Tag.PhotometricInterpretation, VR.CS, "MONOCHROME2");
attrs.setInt(Tag.BitsAllocated, VR.IS, 8);
attrs.setInt(Tag.BitsStored, VR.IS, 8);
attrs.setInt(Tag.NumberOfFrames, VR.IS, 5);
attrs.setInt(Tag.SeriesNumber, VR.IS, 2);
DataBufferByte buff = (DataBufferByte) vf.getData().getDataBuffer();
Fragments fr = attrs.newFragments(Tag.PixelData, VR.OW, 1);
for (int i = 0; i < 5; i++) {
fr.add(buff.getData(0));
}
attrs.trimToSize();
File fi = new File("/tmp/test.dcm");
System.out.println(fi.getCanonicalPath());
System.out.println(fmi);
System.out.println(attrs);
DicomOutputStream dos = new DicomOutputStream(fi);
dos.writeDataset(fmi, attrs);
dos.finish();
dos.close();
}
此代碼是創建dcm文件,但我無法用Weasis查看器打開它。
日Thnx的幫助,,我想你是有什麼建議,但我有一個java.io.EOFException的,沒你自己試過了嗎? – user3136641
我以前做過很多次類似的事情。你可以在你的問題中發佈你的代碼嗎? –
我發佈了我的最後一個測試代碼 – user3136641