Я получил изображение, сжатое с использованием CCITTFaxDecode .Поэтому я использовал LibTiff.Net из Bit Miracle, чтобы иметь возможность конвертировать изображение в любой формат.
Мне нужно записать распакованное изображение в MemoryStream
.Я использовал пример кода из другого потока и смог использовать этот код
using BitMiracle.LibTiff.Classic;
...
MemoryStream ms = new MemoryStream();
TiffStream stm = new TiffStream();
Tiff tiff = Tiff.ClientOpen("","w",ms,stm);
tiff.SetField(TiffTag.IMAGEWIDTH, UInt32.Parse(pd.Get(PdfName.WIDTH).ToString()));
tiff.SetField(TiffTag.IMAGELENGTH, UInt32.Parse(pd.Get(PdfName.HEIGHT).ToString()));
tiff.SetField(TiffTag.COMPRESSION, Compression.CCITTFAX4);
tiff.SetField(TiffTag.BITSPERSAMPLE, UInt32.Parse(pd.Get(PdfName.BITSPERCOMPONENT).ToString()));
tiff.SetField(TiffTag.SAMPLESPERPIXEL, 1);
tiff.WriteRawStrip(0, raw, raw.Length);
MemoryStream newStream = (MemoryStream)tiff.Clientdata();
tiff.Close();
Проблема, с которой я столкнулся, состоит в том, что массив байтов MemoryStream
не является допустимым изображением.
Я использовал System.Drawing.Image
класс для загрузки этого newStream
потока памяти, но в байтовом массиве есть некоторые нулевые значения.
Если я использую конструктор Open
для записи образа на диск, он работает нормально.
Я хотел бы знать, если кто-нибудь знает, почему MemoryStream
не может сохранить распакованное изображение.
Спасибо