我正在使用Bitmap.Save(location,coded,parameters)
来保存tiff图像的第一帧:使用的编码方案是Tiff格式。然后我使用saveadd()
等等。就像win 7 64 bit,上的魅力一样,但在32位或更旧的Windows版本上不起作用。
经过研究,我发现可能是因为tiff图像编码与GDI +之前的处理不同。
有没有办法在没有任何重大变化的情况下克服这个问题?
来源:
Parameter is not valid calling Bitmap.Save()
http://social.msdn.microsoft.com/Forums/fi-FI/netfxbcl/thread/1585c562-f7a9-4cfd-9674-6855ffaa8653
答案 0 :(得分:11)
您必须使用“long”作为质量参数
EncoderParameters parametre = new EncoderParameters(1);
parametre.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (quality as long));
或
EncoderParameters parametre = new EncoderParameters(1);
parametre.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 90L);
或
long quality=90; //
EncoderParameters parametre = new EncoderParameters(1);
parametre.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
答案 1 :(得分:1)
好的,终于找到了解决方案。问题在于压缩格式是作为Save()的输入参数之一以及GDI +如何工作。
解决方案1:
需要将压缩格式更改为该窗口支持的格式。例如,.net中的(long)EncoderValue.CompressionLZW
压缩在这种情况下起作用而不是(long)EncoderValue.CompressionCCITT4
。
但是图像的大小将高于CCITT4产生的大小。 此外,CCITT4仅适用于双色调图像,LZW适用于大多数图像。 因此,在未来提前考虑这些问题,就像在大多数使用tiff图像创建的地方一样,对于使用的压缩和这个问题并不十分重视。
或者可以在下面找到替代解决方案[我还没试过]
解决方案2:
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/1585c562-f7a9-4cfd-9674-6855ffaa8653/
补充阅读:
关于选择何种压缩以及可能引起的原因的问题: