为何默认将 PNG 转换为 JPG?

我完全理解(并且感谢!)这被作为一个站点设置向管理员开放以便切换,但我认为这个“功能”本身非常误导。

PNG 有两个极其重要的特性:其无损(且可读!)的文本表示以及对透明度的支持。这两点都是使用 PNG 的重要原因。作为 Discourse 站点的用户,我上传了一张带有透明度的文本图片到论坛,却非常失望地看到它被自动转换成了 JPG。没关系,我打算把它托管到其他地方。然而,这原本运行得很好,直到 @system 出现并下载、转换了我的图片,还在我不知情的情况下编辑了我的帖子,破坏了透明度,让图片看起来更差。幸好我同时也是管理员,能够上网搜索,找到了下面的一个主题帖,引导我找到了可以修改的 png to jpg quality 设置。

至少,如果图片中存在透明度,似乎明智的做法是关闭此功能。

大家真的在自己的论坛上“喜欢”这个功能吗?此前已经有两次提出过这个问题,两次都有用户因 PNG 被转换而感到困惑或沮丧。重新考虑这个默认设置似乎很有必要。

3 个赞

这意味着该图片作为 JPG 格式时体积要小得多。我相信有一些站点设置可以调整这个阈值。请查看并搜索您的站点设置。

4 个赞

在“设置/文件”中,向下滚动至倒数第 3 项。取消勾选“去除图像元数据”。其上方是“PNG 转 JPG 质量”选项。根据需要调整设置。

5 个赞

是的,我完全理解这是可配置的(我已经在自己的网站上禁用了它),也明白其背后的动机。但我仍然认为这个功能本身就有问题,默认设置理应更改。

举个例子——PNG 是截图的默认文件格式,这很合理。如果我只是截取这个窗口的画面并尝试上传,它会被自动转换为 JPG。

原始文件大小为 361KB,而你们压缩后的 JPG 为 218KB。诚然,文件变小了,但我们却丢失了透明背景——对于使用深色主题的用户来说,效果非常糟糕——而且文字周围还出现了伪影。

如果我在本地使用 optipng 对 PNG 进行优化,最终得到的文件不仅保留了透明背景和清晰的文字,大小也只有 219KB。上传后,它将保持为 PNG 格式:


将 PNG 转换为 JPG 是一种损耗极大的转换方式。在上传时这样做是一回事;在发帖后自动编辑帖子以对外部图片进行同样的转换,则是另一回事。还有其他节省带宽和存储空间的方法,包括 PNG 优化工具,甚至调整图片尺寸(鉴于已有“点击查看详情”功能,在帖子中嵌入较小尺寸的图片,仅在点击时显示完整尺寸图片,似乎是更合理的做法)。

4 个赞

这是一个需要权衡的问题。

有很多用户试图以最低成本托管他们的论坛,却抱怨图片占用过多空间。这类管理员并不关心图片质量,他们只想处处节省、降低成本。

而在另一方面,有些用户真正致力于他们的社区,会利用对象存储服务,在合理成本下提供高质量的图片。

这里的讨论是关于默认设置吗?或者我们是否可以尝试比较 JPEG 与 PNG 在帖子优化后的文件大小?如果我没记错的话,PNG 的优化成本可能相当高……

9 个赞

朋友,这场争论你赢不了的。最好现在就此打住。这个网站设置就是为了让你可以根据自己的喜好进行调整。

2 个赞

取消这个功能是不可能发生的。但这条帖子看起来很有趣:

要让 Discourse 首先尝试使用 optipng,然后根据生成的“优化后”大小来决定是否转换为 JPG,需要做些什么呢?或者这样做会不会太慢?

4 个赞

尝试对一张 6000x6000 的 PNG 图片运行 optipng,看看会发生什么。我们已经在某种程度上做了类似的事情,但算法很快就会急剧失效,而且效果非常差。

5 个赞

我完全没有意图要移除这个功能——如果我用“糟糕设计”来形容它显得过于夸张,我在此致歉。问题在于默认设置。我只是觉得这个行为令人惊讶且无济于事(尤其在我通过外部链接绕过它后,它又被自动改回)。所以我来到这里,是希望如果默认设置有所不同,会对其他人更有益……但就像所有默认选择一样,关于权衡取舍的主观偏好很快就会出现。

感谢 Rafael 这篇有理有据的帖子。我很感激这次讨论——正如我最初所说,我是真诚地询问大家是否喜欢这个功能。

3 个赞

我认为将 .jpg 改为 .webp 会很有趣,它是无损的,但比 .png 更小。

据我了解,这是用于媒体(尤其是需要透明度的图像)的新 Web 标准。

3 个赞

我们无法这样做,因为较旧或不兼容的浏览器(如 IE 和 Safari)不支持该格式。

10 个赞

我现在真的很讨厌 Safari,不过还是谢谢你这么快回复。希望他们能尽快提供支持。

尤其是随着时间推移,IE11 的重要性会越来越低。

2 个赞

有必要说明的是,当前默认使用优化后的 JPEG 并非一个错误的决定!我热爱 PNG :smile_cat:,却对 JPG :grumpycat: 用于图形感到厌恶,但针对这个问题,我完全支持现行的制度(此处“制度”一词兼具“权威”与“系统”双重含义)。

Discourse 团队已对如何使 Discourse 开箱即用取得成功做出了现实评估:

  • 普通网站所有者兼管理员通常不会寻找图像质量选项。他们并不以图像质量为目标,也不会将默认图像文件格式视为问题。因此,默认采用优化后的 JPG 能为大多数人带来最小的困扰和最大的收益。

  • 像我们这样喜爱 PNG 的人,总是在寻找能够保留图像质量和信息的网站选项。同样,以照片和图像驱动为主的网站会将图像质量作为核心决策因素。

当前方法的一个实际后果可能是无缝过渡到有损 WebP。随后,有损与无损 WebP 之间的取舍问题可能会在后续讨论中再次出现。:laughing:

如果你曾优化过大量 PNG 文件,就会知道结果往往不尽如人意。与 JPG 优化器相比,PNG 优化器耗时极长。此外,要生成能够被最有效优化的 PNG 图像,需要更高的技巧,例如:https://medium.com/@duhroach/reducing-png-file-size-8473480d0476How To Optimize PNG — Smashing Magazine

5 个赞

有一件事我们最终会实现,那就是允许用户在上传前优化他们的图片。

通过将压缩工作分配到另一个线程(使用 Web Workers),并采用与服务器端相同的算法(使用 WASM),用户体验并不会很差。

15 个赞

如果 PNG 具有透明度,您认为禁用此行为如何?这是转换过程中最明显的损失。

4 个赞

看起来可以通过以下方式检测:

5 个赞

如果你告诉截图程序停止添加投影,Discourse 可能就会停止转换它,因为那时它实际上就是纯文本和纯色了。

5 个赞

我今天正在研究这个问题,涉及一个希望所有上传的 PNG 文件都保持 PNG 格式的网站。我发现,即使将“PNG 转 JPG 质量”设置为 100,Discourse 仍会将大型 PNG 文件转换为 JPG,除非同时将“重新压缩原始 JPG 质量”设置也设为 100。这是否是预期行为?如果是,那么“重新压缩原始 JPG 质量”设置的描述需要更新,以说明其对 PNG 上传的影响。

8 个赞

嗯,我不太确定,@sam,你希望下周做那个决定吗?我们至少应该更新一下文案。

3 个赞

我不太确定……在此听从 @zogstrip 的意见……

4 个赞