Адаптация из связанного ответа о том, как сохранить Format16bppGrayScale
растровое изображение в формате TIFF, но без предварительного создания фактического растрового изображения.Для этого требуются некоторые библиотеки .NET, которые вы обычно не можете добавлять в качестве ссылок, а именно PresentationCore и WindowsBase.
BitmapSource
, необходимый для создания BitmapFrame
, который может кодировать кодировщик TIFF, может быть создан непосредственно из массива., так:
var bitmapSrc = BitmapSource.Create(Width, Height, 96, 96,
PixelFormats.Gray16, null, rawData, Width * 2);
TiffBitmapEncoder encoder = new TiffBitmapEncoder();
encoder.Compression = TiffCompressOption.Zip;
encoder.Frames.Add(BitmapFrame.Create(bitmapSrc));
encoder.Save(outputStream);
Когда я попробовал это, файл казался настоящим 16-битным изображением.