AstonJ
(AstonJ)
1
如果您尝试上传需要调整大小以符合 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 个赞
simon
2
5 个赞
AstonJ
(AstonJ)
3
我将 max image size kb 改为 500k 后成功上传了。不过我在想,显示给用户的错误信息是否应该简化为“上传失败:图片尺寸过大,请调整大小后重试”?
5 个赞
错误信息确实很糟糕,不过我很好奇,究竟有多少人一开始会去更改那个设置?
5 个赞
AstonJ
(AstonJ)
5
我现在记不太清楚了,但据我所知,如果你调低该设置,且上传的图片尺寸超过该值,Discourse 会尝试调整图片大小以使其符合要求。
我认为这与“PNG 转 JPG 质量”设置有关?那是很久以前的事了,但我记得 Sam 曾负责过图片调整功能。
至于那些希望调整该设置(或者说希望图片尺寸更小)的用户,我猜这适用于对图片质量要求不高的网站(因此除了摄影类网站外的大多数网站都适用)。
快速搜索后找到了 这篇帖子 —— 看来图片调整功能尚未实现(但我明明记得已经实现了
)
1 个赞
我也是这么理解的……即服务器端已部署了针对大文件上传的缩小处理机制。
编辑/更新:
现在这里已经描述得非常清楚了:
5 个赞
@dan 能否想办法在用户尝试上传超大图片时提供更友好的错误提示?优先级较低。
4 个赞
dan
(Dan Ungureanu)
10
我修复了这里的两个问题:
-
图像优化管道将 PNG 转换为 JPEG,然后尝试使用 PNG 图像的优化操作来优化生成的 JPEG。
-
向用户返回了 ImageMagick 错误,但这些错误毫无帮助(例如 convert: improper image header...)
https://github.com/discourse/discourse/pull/9257
8 个赞