使用调整大小工具时图片上传错误

如果您尝试上传需要调整大小以符合 max image size kb 限制的较大 PNG 文件,将会出现以下错误:

lib/discourse.rb:57:in `exec': convert: improper image header `/tmp/image20200221-243-17ldizm.jpg' @ error/png.c/ReadPNGImage/4294.

如果您将图片扩展名改为 .jpeg,则可以正常上传!

max image size kb 重置为默认值后问题也会消失,但似乎无论如何图片都会被重命名为 jpeg 格式。

图片链接:Dropbox


编辑:我刚刚注意到 max image size kb 选项下方还有一段说明:

最大图片上传大小(单位:kB)。该设置也需在 nginx(client_max_body_size)、Apache 或代理服务器中进行配置。

我怀疑自己并未进行上述配置,这是否会导致该问题?(是否有人能提供相关配置示例或说明在哪里进行编辑?)

1 个赞

您可以通过在站点的 app.yml 文件中添加 upload_size 参数来增加该值。详见 https://meta.discourse.org/t/changing-max-attachment-size/26435。

5 个赞

我将 max image size kb 改为 500k 后成功上传了。不过我在想,显示给用户的错误信息是否应该简化为“上传失败:图片尺寸过大,请调整大小后重试”?

5 个赞

错误信息确实很糟糕,不过我很好奇,究竟有多少人一开始会去更改那个设置?

5 个赞

我现在记不太清楚了,但据我所知,如果你调低该设置,且上传的图片尺寸超过该值,Discourse 会尝试调整图片大小以使其符合要求。

我认为这与“PNG 转 JPG 质量”设置有关?那是很久以前的事了,但我记得 Sam 曾负责过图片调整功能。

至于那些希望调整该设置(或者说希望图片尺寸更小)的用户,我猜这适用于对图片质量要求不高的网站(因此除了摄影类网站外的大多数网站都适用)。


快速搜索后找到了 这篇帖子 —— 看来图片调整功能尚未实现(但我明明记得已经实现了 :thinking:

1 个赞

我也是这么理解的……即服务器端已部署了针对大文件上传的缩小处理机制。

编辑/更新:

现在这里已经描述得非常清楚了:

5 个赞

@dan 能否想办法在用户尝试上传超大图片时提供更友好的错误提示?优先级较低。

4 个赞

我修复了这里的两个问题:

  1. 图像优化管道将 PNG 转换为 JPEG,然后尝试使用 PNG 图像的优化操作来优化生成的 JPEG。

  2. 向用户返回了 ImageMagick 错误,但这些错误毫无帮助(例如 convert: improper image header...

https://github.com/discourse/discourse/pull/9257

8 个赞