Beispiel #1
0
    // Create a 256 x 256 Secondary Capture Image Storage
    static private void CreateSmallDICOM(string fileName)
    {
        using (var writer = new gdcm.PixmapWriter())
        {
            gdcm.Pixmap img = writer.GetImage();
            img.SetNumberOfDimensions(3);
            img.SetDimension(0, 512);
            img.SetDimension(1, 512);
            img.SetDimension(2, 2); // fake a 3d volume
            PhotometricInterpretation pi = new PhotometricInterpretation(PhotometricInterpretation.PIType.MONOCHROME2);
            img.SetPhotometricInterpretation(pi);
            gdcm.DataElement pixeldata = new gdcm.DataElement(new gdcm.Tag(0x7fe0, 0x0010));
            byte[]           buffer    = new byte[512 * 512 * 2];
            pixeldata.SetByteValue(buffer, new gdcm.VL((uint)buffer.Length));
            img.SetDataElement(pixeldata);

            gdcm.File        file         = writer.GetFile();
            gdcm.DataSet     ds           = file.GetDataSet();
            gdcm.DataElement ms           = new gdcm.DataElement(new gdcm.Tag(0x0008, 0x0016));
            string           mediastorage = "1.2.840.10008.5.1.4.1.1.7.2"; // Multi-frame Grayscale Byte Secondary Capture Image Storage
            byte[]           val          = StrToByteArray(mediastorage);
            ms.SetByteValue(val, new gdcm.VL((uint)val.Length));
            ds.Insert(ms);

            writer.SetFileName(fileName);
            writer.Write();
        }
    }
Beispiel #2
0
    public static bool ProcessOneFile(string filename, string outfilename)
    {
        PixmapReader reader = new PixmapReader();

        reader.SetFileName(filename);
        if (!reader.Read())
        {
            System.Console.WriteLine("Could not read: " + filename);
            return(false);
        }

        ImageChangeTransferSyntax change = new ImageChangeTransferSyntax();

        change.SetForce(false);             // do we really want to recompress when input is alread compressed in same alg ?
        change.SetCompressIconImage(false); // Keep it simple
        change.SetTransferSyntax(new TransferSyntax(TransferSyntax.TSType.JPEG2000Lossless));
        change.SetInput(reader.GetPixmap());
        if (!change.Change())
        {
            System.Console.WriteLine("Could not change: " + filename);
            return(false);
        }

        gdcm.FileMetaInformation fmi = reader.GetFile().GetHeader();
        // The following three lines make sure to regenerate any value:
        fmi.Remove(new gdcm.Tag(0x0002, 0x0012));
        fmi.Remove(new gdcm.Tag(0x0002, 0x0013));
        fmi.Remove(new gdcm.Tag(0x0002, 0x0016));

        PixmapWriter writer = new PixmapWriter();

        writer.SetFileName(outfilename);
        writer.SetFile(reader.GetFile());
        gdcm.Bitmap bitout = change.GetOutput();
        gdcm.Pixmap pixout = (gdcm.Pixmap)bitout;
        //System.Console.WriteLine( "Debug: " + pixout.toString() );

        writer.SetPixmap(pixout);
        if (!writer.Write())
        {
            System.Console.WriteLine("Could not write: " + outfilename);
            return(false);
        }

        return(true);
    }