J'ai reçu une image compressée en utilisant CCITTFaxDecode. J'ai donc utilisé LibTiff.Net de Bit Miracle pour pouvoir convertir l'image dans n'importe quel format.Comment utiliser Bit Miracle LibTiff.Net pour écrire l'image dans un MemoryStream
Je dois écrire l'image décompressée à MemoryStream
. J'ai utilisé un exemple de code d'un autre fil et j'ai pu utiliser ce code
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();
Le problème que je vais avoir est que le tableau MemoryStream
octet n'est pas une image valide.
J'ai utilisé la classe System.Drawing.Image
pour charger ce flux de mémoire newStream
, mais il y a des valeurs nulles dans le tableau d'octets. Si j'utilise le constructeur Open
pour écrire l'image sur le disque, cela fonctionne correctement.
Je voudrais savoir si quelqu'un sait pourquoi le MemoryStream
ne parvient pas à stocker l'image décompressée.
Merci