Exemplo n.º 1
0
        static public unsafe SixLabors.ImageSharp.Image <SixLabors.ImageSharp.PixelFormats.L16> ReadL16Image(this DicomDataset dataset)
        {
            const int pixelSize    = 2;
            var       decodedImage = dataset.DecodeImage(out _);
            var       pixelData    = decodedImage.PixelData;

            fixed(byte *p = &pixelData[0])
            return(Image.LoadPixelData <L16>(new ReadOnlySpan <L16>(p, pixelData.Length / pixelSize), decodedImage.Width, decodedImage.Height));
        }
Exemplo n.º 2
0
        static public unsafe SixLabors.ImageSharp.Image <SixLabors.ImageSharp.PixelFormats.Rgb48> ReadRgb48Image(this DicomDataset dataset)
        {
            const int pixelSize          = 6;
            var       decodedImage       = dataset.DecodeImage(out _);
            var       grayscalePixelData = decodedImage.PixelData;

            int pixelCount = decodedImage.Width * decodedImage.Height;

            byte[] colorPixelData = new byte[pixelSize * pixelCount];
            for (int pixelIndex = 0; pixelIndex != pixelCount; pixelIndex++)
            {
                colorPixelData[pixelIndex * pixelSize]     = grayscalePixelData[pixelIndex * 2];
                colorPixelData[pixelIndex * pixelSize + 2] = grayscalePixelData[pixelIndex * 2];
                colorPixelData[pixelIndex * pixelSize + 4] = grayscalePixelData[pixelIndex * 2];
                colorPixelData[pixelIndex * pixelSize + 1] = grayscalePixelData[pixelIndex * 2 + 1];
                colorPixelData[pixelIndex * pixelSize + 3] = grayscalePixelData[pixelIndex * 2 + 1];
                colorPixelData[pixelIndex * pixelSize + 5] = grayscalePixelData[pixelIndex * 2 + 1];
            }
            fixed(byte *p = &colorPixelData[0])
            return(Image.LoadPixelData <Rgb48>(new ReadOnlySpan <Rgb48>(p, colorPixelData.Length / pixelSize), decodedImage.Width, decodedImage.Height));
        }