以编程方式为 Silverlight 显示选择图像转换格式为 JPEG 或 PNG

Posted

技术标签:

【中文标题】以编程方式为 Silverlight 显示选择图像转换格式为 JPEG 或 PNG【英文标题】:Programmatically choosing image conversion format to JPEG or PNG for Silverlight display 【发布时间】:2011-02-18 21:53:27 【问题描述】:

我有一个项目,我需要将大量图像类型转换为可在 Silverlight 应用程序中显示 - TIFF、GIF、WMF、EMF、BMP、DIB 等。我可以在补水之前在服务器上进行这些转换Silverlight 应用程序。

但是,我不确定何时应该选择转换为哪种格式,JPG 或 PNG。是否有某种标准,例如 TIFF 应该始终是 JPEG 而 GIF 应该始终是 PNG。或者,如果 BMP 为 24 位,则应将其转换为 JPEG - 任何更低的格式都可以是 PNG。或者一切都是PNG,为什么

我通常see 或see 对这类问题的回答是“如果图片是照片,请使用 JPEG”或“如果有直线,PNG 更好。”不幸的是,我根本无法查看任何图像文件,我只想要一种通过代码执行此操作的标准方法,即使那是无数个 if/then 语句。

有没有围绕这个主题的标准或最佳实践?

【问题讨论】:

【参考方案1】:

simplest thing that could possibly work 是“保留所有细节”(“100% 质量”),即始终使用 PNG 而不是 JPEG。

PNG 图像总是看起来与原始图像相同(它是无损的)。 JPG 图像通常看起来与原始图像大致相同,但在某些图像(例如线条艺术)上,JPG 会产生奇怪的压缩伪影(它是有损的)。

将 JPEG 图像转换为 PNG 图像没有帮助。因此,无需转换即可直接传递 JPEG 文件。如果 TIFF 容器文件包含 JPEG 图像,则将其提取为标准 JPEG 格式文件;否则最好将该 TIFF 文件转换为 PNG。 考虑同时制作JPEG文件和PNG文件;如果 JPEG 文件“明显”小于 PNG 文件,请使用 JPEG 文件。 “.emf”和“.wmf”本质上是基于矢量的,而不是光栅图形。对于矢量图形,PNG 比 JPEG 更好,但最好是矢量文件格式。是否可以使用标准矢量图形格式(“.svg”)?

【讨论】:

感谢大卫,这是一些非常好的建议,尤其是前 2 个项目符号。在 #3 上,不幸的是我不能使用 SVG,只能使用 PNG 和 JPEG。【参考方案2】:

JPG 相对于 PNG 的一大优势是 JPG 在图片大小和质量之间提供了良好的平衡。如果文件大小不是问题,那么 PNG 可能是要走的路,因为它提供了比 JPG 更大的灵活性。不过,这并不能真正回答您的问题。

【讨论】:

【参考方案3】:

您可以使用Smush.it 之类的服务 - 它会告诉您图像的最佳优化格式,并为您运行压缩。

如果我没记错的话,他们会在每张图像上运行所有压缩,然后比较结果...返回集合中最好的。

【讨论】:

这是一个有趣的服务,我以前没见过。这就是我想做的事情,除了我自己,而不是通过第三方。但是,我将压缩视为第二步 - 首先是转换,因此我需要一些基于图像文件的某种可查询属性集的指南。喜欢If myImage.RawFormat = ImageFormat.GIF And myImage.Flags = ImageFlagsHasAlpha Then myImage.Save(imageName & "." & ImageFormat.Png) Else myImage.Save(imageName & "." & ImageFormat.Jpg)。真正的问题是 - 是否有任何基于输入的输出选择合乎逻辑的选择?

以上是关于以编程方式为 Silverlight 显示选择图像转换格式为 JPEG 或 PNG的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将 Silverlight Grid 布局 ColumnDefinition 宽度设置为“*”?

选择 Drawable 以编程方式显示在图像视图上

以编程方式选择标签栏项目并显示指示器图像

如何以编程方式在 Silverlight 中创建一个没有框(只是复选)的复选框?

如何以编程方式将垂直滚动条添加到组合框

SharePoint 2010/Silverlight:以编程方式传递自定义参数