6

Bitmap.Save(location,coded,parameters)用来保存 tiff 图像的第一帧:使用的编码方案是 Tiff 格式。然后我用saveadd()等等。在 win 7 64 位上像魅力一样工作,但在 32 位或更早的 Windows 版本上不起作用。

经过研究,我发现这可能是由于 tiff 图像编码与 GDI+ 之前的图像编码处理方式不同。

有没有办法在没有任何剧烈变化的情况下克服这个问题?

资料来源:

参数无效调用 Bitmap.Save()

http://social.msdn.microsoft.com/Forums/fi-FI/netfxbcl/thread/1585c562-f7a9-4cfd-9674-6855ffaa8653

4

2 回答 2

18

您必须使用“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);
于 2013-03-01T22:14:39.757 回答
1

好的,终于找到解决方案了。问题在于作为 Save() 的输入参数之一给出的压缩格式以及 GDI+ 的工作方式。

解决方案1:

需要将压缩格式更改为该窗口支持的格式。例如)(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/

补充阅读:

所以关于选择什么压缩以及为什么会出现问题,您可以参考:

https://stackoverflow.com/questions/3478292/whats-the-recommended-tiff-compression-for-color-photos/3480411#3480411

于 2013-03-02T12:06:25.903 回答