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)); }
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)); }