我有一个多页 TIFF,我使用 Leadtools 逐页拆分,并更改它们的压缩以与第三方兼容。当我尝试将图像保存到 memoryStream 时,出现 Parameter is not valid 异常。但是,这只发生在他们的机器上,或者我运行 Server 2008 的测试机器上。我无法在我的开发机器(使用 VS2008 的 Win 7)上重现它。这是代码:
RasterImage image = codecs.Load( file, 0, CodecsLoadByteOrder.RgbOrGray, currentPage, currentPage + (detail.Pages - 1) );
Image newImage = RasterImageConverter.ConvertToImage( image, ConvertToImageOptions.None );
MemoryStream memStream = new MemoryStream();
ImageCodecInfo encoderInfo = GetEncoderInfo( );
EncoderParameters encoderParams = new EncoderParameters( 1 );
EncoderParameter parameter = new EncoderParameter( System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionCCITT4 );
encoderParams.Param[0] = parameter;
newImage.Save(memStream, encoderInfo , encoderParams);
对此有什么想法吗?感谢您的帮助!
最佳答案
检查图像的像素格式。如果它不是 1 位,这将失败 - 你不能在 1 位以外的任何东西上使用 CCITT。也可能是特定操作系统没有 CCITT4 子编解码器,可能只有 CCITT3(尽管这种可能性很小)。
关于c# - 将 TIFF 保存到流时参数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5572231/