// Decompiled by DJ v3.7.7.81 Copyright 2004 Atanas Neshkov Date: 2006-3-15 14:14:48
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3) import java.awt.image.*;
import java.io.*;
import java.util.Iterator;
import javax.imageio.*;
import jdcm.*;
import jdcm.imageio.DCMMetadata;public class Img2dcm
{ public Img2dcm()
{
} public void convertJPEG(BufferedImage bufferedimage, String s, String s1, String s2)
throws Exception
{
int i = bufferedimage.getWidth();
int j = bufferedimage.getHeight();
int k = bufferedimage.getData().getNumBands();
int l = bufferedimage.getSampleModel().getSampleSize(0);
int i1 = l;
int j1 = i1 - 1;
DicomSet dicomset;
if(s2 != null)
{
DCMMetadata dcmmetadata = new DCMMetadata(s2);//方法内容见后面 dicomset = dcmmetadata.getDicomSet();
} else
{
dicomset = new DicomSet();
}
dicomset.setElement(new DicomElement(8, 24, "UI", StaticProperties.UIDGenerator()));
dicomset.setElement(new DicomElement(8, 22, "UI", "1.2.840.10008.5.1.4.1.1.7"));
dicomset.setElement(new DicomElement(40, 2, "US", k));
dicomset.setElement(new DicomElement(40, 16, "US", j));
dicomset.setElement(new DicomElement(40, 17, "US", i));
dicomset.setElement(new DicomElement(40, 256, "US", l));
dicomset.setElement(new DicomElement(40, 257, "US", i1));
dicomset.setElement(new DicomElement(40, 258, "US", j1));
dicomset.setElement(new DicomElement(40, 259, "US", 0));
if(k == 1)
dicomset.setElement(new DicomElement(40, 4, "CS", "MONOCHROME1"));
else
if(k == 3)
{
dicomset.setElement(new DicomElement(40, 4, "CS", "RGB"));
dicomset.setElement(new DicomElement(40, 6, "US", 0));
}
DicomFile dicomfile = new DicomFile(dicomset);
dicomfile.setTransferSyntaxUID("1.2.840.10008.1.2.4.50");
FileInputStream fileinputstream = new FileInputStream(s);
int k1 = fileinputstream.available();
byte abyte0[] = new byte[k1];
fileinputstream.read(abyte0);
DicomSequence dicomsequence = new DicomSequence(new byte[] {
0, 0, 0, 0
});
dicomsequence.addFragment(abyte0);
DicomElement dicomelement = new DicomElement(32736, 16, "SQ", dicomsequence);
dicomset.setElement(dicomelement);
dicomfile.write(s1);
} public static void helpMessage()
{
System.out.println("jdcm: img2dcm " + StaticProperties.IMPLEMENTATION_VERSION);
System.out.println();
System.out.println("usage: img2dcm [options] imgfile-in dcmfile-out");
System.out.println();
System.out.println("parameters:");
System.out.println(" imgfile-in IMAGE (JPEG, BMP,...) filename to be converted");
System.out.println(" dcmfile-out DICOM output filename");
System.out.println();
System.out.println("general options:");
System.out.println(" --version print version information and exit");
System.out.println(" -v verbose mode, print processing details");
System.out.println();
System.out.println("input options:");
System.out.println(" +mf XML metafile to incorporate in DICOM file");
} public static void main(String args[])
{
String s = null;
String s1 = null;
String s2 = null;
try
{
int i = 0;
for(boolean flag = false; !flag && i < args.length;)
{
if(args[i].equals("--version"))
{
System.out.println(StaticProperties.IMPLEMENTATION_VERSION);
System.exit(0);
}
if(args[i].equals("-v"))
{
StaticProperties.VERBOSE = true;
i++;
}
if(args[i].equals("+mf"))
{
s = args[i + 1];
i += 2;
} else
{
flag = true;
}
} if(i < args.length)
{
s1 = args[i];
i++;
} else
{
helpMessage();
System.exit(0);
}
if(i < args.length)
{
s2 = args[i];
} else
{
helpMessage();
System.exit(0);
}
DCMMetadata dcmmetadata = null;
if(s != null)
dcmmetadata = new DCMMetadata(s);
File file = new File(s1);
javax.imageio.stream.ImageInputStream imageinputstream = ImageIO.createImageInputStream(file);
Iterator iterator = ImageIO.getImageReaders(imageinputstream);
ImageReader imagereader = (ImageReader)iterator.next();
if(imagereader.getFormatName().equals("jpeg"))
{
Img2dcm img2dcm = new Img2dcm();
BufferedImage bufferedimage1 = ImageIO.read(file);
img2dcm.convertJPEG(bufferedimage1, s1, s2, s);
} else
{
BufferedImage bufferedimage = ImageIO.read(file);
String args1[] = ImageIO.getWriterFormatNames();
Iterator iterator1 = ImageIO.getImageWritersByFormatName("dcm");
ImageWriter imagewriter = (ImageWriter)iterator1.next();
File file1 = new File(s2);
imagewriter.setOutput(file1);
imagewriter.write(dcmmetadata, new IIOImage(bufferedimage, null, null), null);
}
}
catch(Exception exception)
{
exception.printStackTrace();
}
}
}
//metafilepublic DCMMetadata(String fileName) throws IOException {
try {
// Use an instance of ourselves as the SAX event handler
XMLDataSet handler = new XMLDataSet();
// Use the default (non-validating) parser
SAXParserFactory factory = SAXParserFactory.newInstance();
//Parse the input
SAXParser saxParser = factory.newSAXParser();
saxParser.parse(new File(fileName), handler);
handler.getDicomFile();
dicomSet = handler.getDicomFile().getDicomSet();
} catch(Exception e) {
e.printStackTrace();
}
}
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3) import java.awt.image.*;
import java.io.*;
import java.util.Iterator;
import javax.imageio.*;
import jdcm.*;
import jdcm.imageio.DCMMetadata;public class Img2dcm
{ public Img2dcm()
{
} public void convertJPEG(BufferedImage bufferedimage, String s, String s1, String s2)
throws Exception
{
int i = bufferedimage.getWidth();
int j = bufferedimage.getHeight();
int k = bufferedimage.getData().getNumBands();
int l = bufferedimage.getSampleModel().getSampleSize(0);
int i1 = l;
int j1 = i1 - 1;
DicomSet dicomset;
if(s2 != null)
{
DCMMetadata dcmmetadata = new DCMMetadata(s2);//方法内容见后面 dicomset = dcmmetadata.getDicomSet();
} else
{
dicomset = new DicomSet();
}
dicomset.setElement(new DicomElement(8, 24, "UI", StaticProperties.UIDGenerator()));
dicomset.setElement(new DicomElement(8, 22, "UI", "1.2.840.10008.5.1.4.1.1.7"));
dicomset.setElement(new DicomElement(40, 2, "US", k));
dicomset.setElement(new DicomElement(40, 16, "US", j));
dicomset.setElement(new DicomElement(40, 17, "US", i));
dicomset.setElement(new DicomElement(40, 256, "US", l));
dicomset.setElement(new DicomElement(40, 257, "US", i1));
dicomset.setElement(new DicomElement(40, 258, "US", j1));
dicomset.setElement(new DicomElement(40, 259, "US", 0));
if(k == 1)
dicomset.setElement(new DicomElement(40, 4, "CS", "MONOCHROME1"));
else
if(k == 3)
{
dicomset.setElement(new DicomElement(40, 4, "CS", "RGB"));
dicomset.setElement(new DicomElement(40, 6, "US", 0));
}
DicomFile dicomfile = new DicomFile(dicomset);
dicomfile.setTransferSyntaxUID("1.2.840.10008.1.2.4.50");
FileInputStream fileinputstream = new FileInputStream(s);
int k1 = fileinputstream.available();
byte abyte0[] = new byte[k1];
fileinputstream.read(abyte0);
DicomSequence dicomsequence = new DicomSequence(new byte[] {
0, 0, 0, 0
});
dicomsequence.addFragment(abyte0);
DicomElement dicomelement = new DicomElement(32736, 16, "SQ", dicomsequence);
dicomset.setElement(dicomelement);
dicomfile.write(s1);
} public static void helpMessage()
{
System.out.println("jdcm: img2dcm " + StaticProperties.IMPLEMENTATION_VERSION);
System.out.println();
System.out.println("usage: img2dcm [options] imgfile-in dcmfile-out");
System.out.println();
System.out.println("parameters:");
System.out.println(" imgfile-in IMAGE (JPEG, BMP,...) filename to be converted");
System.out.println(" dcmfile-out DICOM output filename");
System.out.println();
System.out.println("general options:");
System.out.println(" --version print version information and exit");
System.out.println(" -v verbose mode, print processing details");
System.out.println();
System.out.println("input options:");
System.out.println(" +mf XML metafile to incorporate in DICOM file");
} public static void main(String args[])
{
String s = null;
String s1 = null;
String s2 = null;
try
{
int i = 0;
for(boolean flag = false; !flag && i < args.length;)
{
if(args[i].equals("--version"))
{
System.out.println(StaticProperties.IMPLEMENTATION_VERSION);
System.exit(0);
}
if(args[i].equals("-v"))
{
StaticProperties.VERBOSE = true;
i++;
}
if(args[i].equals("+mf"))
{
s = args[i + 1];
i += 2;
} else
{
flag = true;
}
} if(i < args.length)
{
s1 = args[i];
i++;
} else
{
helpMessage();
System.exit(0);
}
if(i < args.length)
{
s2 = args[i];
} else
{
helpMessage();
System.exit(0);
}
DCMMetadata dcmmetadata = null;
if(s != null)
dcmmetadata = new DCMMetadata(s);
File file = new File(s1);
javax.imageio.stream.ImageInputStream imageinputstream = ImageIO.createImageInputStream(file);
Iterator iterator = ImageIO.getImageReaders(imageinputstream);
ImageReader imagereader = (ImageReader)iterator.next();
if(imagereader.getFormatName().equals("jpeg"))
{
Img2dcm img2dcm = new Img2dcm();
BufferedImage bufferedimage1 = ImageIO.read(file);
img2dcm.convertJPEG(bufferedimage1, s1, s2, s);
} else
{
BufferedImage bufferedimage = ImageIO.read(file);
String args1[] = ImageIO.getWriterFormatNames();
Iterator iterator1 = ImageIO.getImageWritersByFormatName("dcm");
ImageWriter imagewriter = (ImageWriter)iterator1.next();
File file1 = new File(s2);
imagewriter.setOutput(file1);
imagewriter.write(dcmmetadata, new IIOImage(bufferedimage, null, null), null);
}
}
catch(Exception exception)
{
exception.printStackTrace();
}
}
}
//metafilepublic DCMMetadata(String fileName) throws IOException {
try {
// Use an instance of ourselves as the SAX event handler
XMLDataSet handler = new XMLDataSet();
// Use the default (non-validating) parser
SAXParserFactory factory = SAXParserFactory.newInstance();
//Parse the input
SAXParser saxParser = factory.newSAXParser();
saxParser.parse(new File(fileName), handler);
handler.getDicomFile();
dicomSet = handler.getDicomFile().getDicomSet();
} catch(Exception e) {
e.printStackTrace();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货