public static int Main(string[] args) { string directory = args[0]; gdcm.Directory dir = new gdcm.Directory(); uint nfiles = dir.Load(directory); //System.Console.WriteLine(dir.toString()); gdcm.FilenamesType filenames = dir.GetFilenames(); Image image = new Image(); image.SetNumberOfDimensions(3); // important for now DataElement pixeldata = new DataElement(new gdcm.Tag(0x7fe0, 0x0010)); // Create a new SequenceOfFragments C++ object, store it as a SmartPointer : SmartPtrFrag sq = SequenceOfFragments.New(); // Yeah, the file are not garantee to be in order, please adapt... for (uint i = 0; i < nfiles; ++i) { System.Console.WriteLine(filenames[(int)i]); string file = filenames[(int)i]; System.IO.FileStream infile = new System.IO.FileStream(file, System.IO.FileMode.Open, System.IO.FileAccess.Read); uint fsize = gdcm.PosixEmulation.FileSize(file); byte[] jstream = new byte[fsize]; infile.Read(jstream, 0, jstream.Length); Fragment frag = new Fragment(); frag.SetByteValue(jstream, new gdcm.VL((uint)jstream.Length)); sq.AddFragment(frag); } // Pass by reference: pixeldata.SetValue(sq.__ref__()); // insert: image.SetDataElement(pixeldata); // JPEG use YBR to achieve better compression ratio by default (not RGB) // FIXME hardcoded: PhotometricInterpretation pi = new PhotometricInterpretation(PhotometricInterpretation.PIType.MONOCHROME2); image.SetPhotometricInterpretation(pi); // FIXME hardcoded: PixelFormat pixeltype = new PixelFormat(1, 8, 8, 7); image.SetPixelFormat(pixeltype); // FIXME hardcoded: image.SetTransferSyntax(new TransferSyntax(TransferSyntax.TSType.JPEGLosslessProcess14_1)); image.SetDimension(0, 512); image.SetDimension(1, 512); image.SetDimension(2, 355); // Decompress ! byte[] decompressedData = new byte[(int)image.GetBufferLength()]; image.GetBuffer(decompressedData); // Write out the decompressed bytes System.Console.WriteLine(image.toString()); using (System.IO.Stream stream = System.IO.File.Open(@"/tmp/dd.raw", System.IO.FileMode.Create)) { System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream); writer.Write(decompressedData); } return(0); }
public static int Main(string[] args) { string file1 = args[0]; System.IO.FileStream infile = new System.IO.FileStream(file1, System.IO.FileMode.Open, System.IO.FileAccess.Read); uint fsize = gdcm.PosixEmulation.FileSize(file1); byte[] jstream = new byte[fsize]; infile.Read(jstream, 0, jstream.Length); Trace.DebugOn(); Image image = new Image(); image.SetNumberOfDimensions(2); // important for now DataElement pixeldata = new DataElement(new gdcm.Tag(0x7fe0, 0x0010)); // DO NOT set a ByteValue here, JPEG is a particular kind of encapsulated syntax // in which can one cannot use a simple byte array for storage. Instead, see // gdcm.SequenceOfFragments //pixeldata.SetByteValue( jstream, new gdcm.VL( (uint)jstream.Length ) ); // Create a new SequenceOfFragments C++ object, store it as a SmartPointer : SmartPtrFrag sq = SequenceOfFragments.New(); Fragment frag = new Fragment(); frag.SetByteValue(jstream, new gdcm.VL((uint)jstream.Length)); // Single file => single fragment sq.AddFragment(frag); // Pass by reference: pixeldata.SetValue(sq.__ref__()); // insert: image.SetDataElement(pixeldata); // JPEG use YBR to achieve better compression ratio by default (not RGB) // FIXME hardcoded: PhotometricInterpretation pi = new PhotometricInterpretation(PhotometricInterpretation.PIType.YBR_FULL); image.SetPhotometricInterpretation(pi); // FIXME hardcoded: PixelFormat pixeltype = new PixelFormat(3, 8, 8, 7); image.SetPixelFormat(pixeltype); // FIXME hardcoded: image.SetTransferSyntax(new TransferSyntax(TransferSyntax.TSType.JPEGLosslessProcess14_1)); image.SetDimension(0, 692); image.SetDimension(1, 721); // Decompress ! byte[] decompressedData = new byte[(int)image.GetBufferLength()]; image.GetBuffer(decompressedData); // Write out the decompressed bytes System.Console.WriteLine(image.toString()); using (System.IO.Stream stream = System.IO.File.Open(@"/tmp/dd.raw", System.IO.FileMode.Create)) { System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream); writer.Write(decompressedData); } return(0); }
public static int Main(string[] args) { string file1 = args[0]; Mpeg2VideoInfo info = new Mpeg2VideoInfo(file1); System.Console.WriteLine(info.StartTime); System.Console.WriteLine(info.EndTime); System.Console.WriteLine(info.Duration); System.Console.WriteLine(info.AspectRatio); System.Console.WriteLine(info.FrameRate); System.Console.WriteLine(info.PictureWidth); System.Console.WriteLine(info.PictureHeight); ImageReader r = new ImageReader(); //Image image = new Image(); Image image = r.GetImage(); image.SetNumberOfDimensions(3); DataElement pixeldata = new DataElement(new gdcm.Tag(0x7fe0, 0x0010)); System.IO.FileStream infile = new System.IO.FileStream(file1, System.IO.FileMode.Open, System.IO.FileAccess.Read); uint fsize = gdcm.PosixEmulation.FileSize(file1); byte[] jstream = new byte[fsize]; infile.Read(jstream, 0, jstream.Length); SmartPtrFrag sq = SequenceOfFragments.New(); Fragment frag = new Fragment(); frag.SetByteValue(jstream, new gdcm.VL((uint)jstream.Length)); sq.AddFragment(frag); pixeldata.SetValue(sq.__ref__()); // insert: image.SetDataElement(pixeldata); PhotometricInterpretation pi = new PhotometricInterpretation(PhotometricInterpretation.PIType.YBR_PARTIAL_420); image.SetPhotometricInterpretation(pi); // FIXME hardcoded: PixelFormat pixeltype = new PixelFormat(3, 8, 8, 7); image.SetPixelFormat(pixeltype); // FIXME hardcoded: TransferSyntax ts = new TransferSyntax(TransferSyntax.TSType.MPEG2MainProfile); image.SetTransferSyntax(ts); image.SetDimension(0, (uint)info.PictureWidth); image.SetDimension(1, (uint)info.PictureHeight); image.SetDimension(2, 721); ImageWriter writer = new ImageWriter(); gdcm.File file = writer.GetFile(); file.GetHeader().SetDataSetTransferSyntax(ts); Anonymizer anon = new Anonymizer(); anon.SetFile(file); MediaStorage ms = new MediaStorage(MediaStorage.MSType.VideoEndoscopicImageStorage); UIDGenerator gen = new UIDGenerator(); anon.Replace(new Tag(0x0008, 0x16), ms.GetString()); anon.Replace(new Tag(0x0018, 0x40), "25"); anon.Replace(new Tag(0x0018, 0x1063), "40.000000"); anon.Replace(new Tag(0x0028, 0x34), "4\\3"); anon.Replace(new Tag(0x0028, 0x2110), "01"); writer.SetImage(image); writer.SetFileName("dummy.dcm"); if (!writer.Write()) { System.Console.WriteLine("Could not write"); return(1); } return(0); }