Problem encoding TIFF, the compression is always LZW
- Hi, I'm trying to encode a Bitmap array to a multipage TIFF.
The Bitmaps are 1 bit depth (verified), I force the CCITT4compression, but the result is always LZW compression.
The code:
Bitmap[] IncomingArray; MemoryStream _stream = new MemoryStream(); Image TempImage; Encoder myEncoder = Encoder.SaveFlag; ImageCodecInfo infoEncoder = GetEncoderInf(ImageFormat.Tiff); foreach (ImageCodecInfo ici in ImageCodecInfo.GetImageEncoders()) if (ici.MimeType == "image/tiff") infoEncoder = ici; EncoderParameters myEncoderParameters = new EncoderParameters(2); myEncoderParameters.Param[0] = new EncoderParameter(myEncoder, (long)EncoderValue.MultiFrame); myEncoderParameters.Param[1] = new EncoderParameter(myEncoder, (long)EncoderValue.CompressionCCITT4); TempImage = (Image)IncomingArray[0]; TempImage.Save(_stream, infoEncoder, myEncoderParameters); if (IncomingArray.Length > 1) { myEncoderParameters.Param[0] = new EncoderParameter(myEncoder, (long)EncoderValue.FrameDimensionPage); for (int iCount = 1; iCount < IncomingArray.Length; iCount++) { TempImage.SaveAdd((Image)IncomingArray[iCount], myEncoderParameters); } } myEncoderParameters.Param[0] = new EncoderParameter(myEncoder, (long)EncoderValue.Flush); TempImage.SaveAdd(myEncoderParameters); //_stream.Seek(0, SeekOrigin.Begin); _stream.Position = 0; File.WriteAllBytes("c:\\test.tif", _stream.ToArray());
Looking at tags, test.tif is 1 bit depth, but is encoded LZW...
If the image is 1 bit depth, why it isn't compressed CCITT4 ?
Answers
Solved !
Simply changed:
myEncoderParameters.Param[1] = new EncoderParameter(myEncoder, (long)EncoderValue.CompressionCCITT4);
with:
myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionCCITT4);The compression type works only if associated to the right Encoder.
- Marked As Answer byNazza Tuesday, November 03, 2009 3:07 PM
All Replies
Solved !
Simply changed:
myEncoderParameters.Param[1] = new EncoderParameter(myEncoder, (long)EncoderValue.CompressionCCITT4);
with:
myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionCCITT4);The compression type works only if associated to the right Encoder.
- Marked As Answer byNazza Tuesday, November 03, 2009 3:07 PM


