【发布时间】:2011-09-01 17:50:45
【问题描述】:
我收到了一张使用 CCITTFaxDecode 压缩的图片。所以我使用来自 Bit Miracle 的 LibTiff.Net 来将图像转换为任何格式。
我需要将解压后的图像写入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 无法存储解压缩的图像。
谢谢
【问题讨论】:
标签: tiff libtiff.net