c# - 将 TIFF 保存到流时参数无效

标签 c# .net gdi+

我有一个多页 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/

相关文章:

c# - DirectoryInfo.Delete 与 Directory.Delete

c# - 在 C# 中从 javascript 生成 html 编码

wpf - 我可以从 WPF 窗口获取 HDC 以便我可以使用 Gdi+ API 绘制它吗?

c# - 如何停止协程?

c# - XML 反序列化忽略不按字母顺序排列的属性

c# - 通过 GetBlockBlobReference() 方法添加到 blob 文件名的容器名称

.net - SQL Server CLR 函数

c++ - GDI+ - 将位图像素转换为 JPG 格式

c# - GDI+ 中的 System.Drawing.Image.Save 发生一般性错误

c# - 什么时候委托(delegate)和 Func/Action 不能互换?