Dex*_*ers 6 c# encoding gdi+ tiff bitmap
我Bitmap.Save(location,coded,parameters)用来保存tiff图像的第一帧:使用的编码方案是Tiff格式.我然后使用saveadd()等等.就像win 7 64 bit上的魅力一样,但不适用于32位或更旧的Windows版本.
在研究之后,我发现可能是由于tiff图像编码与GDI +之前的处理不同.
有没有办法克服这个没有任何重大变化?
资料来源:
http://social.msdn.microsoft.com/Forums/fi-FI/netfxbcl/thread/1585c562-f7a9-4cfd-9674-6855ffaa8653
mus*_*ürk 12
您必须使用"long"作为质量参数
EncoderParameters parametre = new EncoderParameters(1);
parametre.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (quality as long));
Run Code Online (Sandbox Code Playgroud)
要么
EncoderParameters parametre = new EncoderParameters(1);
parametre.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 90L);
Run Code Online (Sandbox Code Playgroud)
要么
long quality=90; //
EncoderParameters parametre = new EncoderParameters(1);
parametre.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
Run Code Online (Sandbox Code Playgroud)
好吧,终于找到解决办法了。问题在于作为 Save() 输入参数之一给出的压缩格式以及 GDI+ 的工作原理。
解决方案一:
压缩格式需要更改为该窗口支持的格式。例如)(long)EncoderValue.CompressionLZW在这种情况下,.net 中的压缩而不是(long)EncoderValue.CompressionCCITT4.
但图像的尺寸会比 CCITT4 生成的图像大。此外,CCITT4 仅适用于双色调图像,而 LZW 适合大多数图像。因此,只要提前考虑这些问题,因为在大多数使用 tiff 图像创建的地方,所使用的压缩和这个问题并不太重要。
或者可以在下面找到替代解决方案[但我还没有尝试过]
解决方案2:
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/1585c562-f7a9-4cfd-9674-6855ffaa8653/
补充阅读:
因此,关于选择什么压缩以及为什么会出现的问题,您可以参考: