尺寸小于1的SVG图片上传失败

将 SVG 图像上传到帖子(包含在内)时,如果主 <svg> 元素中的 heightwidth 属性的数值尺寸(忽略相关单位)小于 “1”,则会失败并显示以下消息:

抱歉,我们无法确定图像的大小。也许您的图像已损坏?

似乎代码会在关联 FIX - use ImageMagick to determine size of SVG images by jbrw · Pull Request #12230 · discourse/discourse · GitHub 的利用单位信息计算实际显示尺寸的逻辑有机会执行之前,先检查 heightwidth 属性并拒绝上传。在论坛中搜索

svg “determine the size of the image” “maybe your image is corrupted”

目前返回 9 条结果。如何在帖子中包含 fontawesome 图标? 看起来可能有相同的原因,但那份报告年代久远,且据称已修复。

经过一些调研,这似乎是所使用的 fastimage 库的问题。我已在该库中为 尺寸较小的 SVG 图像被检测为零像素(忽略单位) 创建了议题,并在此处引用。假设 fastimage 库得到修复,Discourse 可能仍需要进行更改以获取更新后的版本。

以下是导致失败的示例 SVG 文件的 XML 源代码。

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
  xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"
  width="1.2in" height="0.9in"
  viewBox="0 0 1200 900"
>
  <line x1="1100" x2="100" y1="100" y2="800" stroke="#000000" stroke-width="50"/>
</svg>

以下是演示对上图进行微小修改后使其能在论坛中正常工作的图像。这些图像与引用的 GitHub 议题中的附件一致。

image2

image4

感谢您对问题的详细描述。

我已在本地重现了该问题,我认为这个拉取请求应该能解决您所描述的问题。

编辑:奇怪……测试在我本地通过了,但在我推送后却失败了。我明天会深入调查这个问题。

2 个赞

这已于上周合并。

@µMerlin 能否请你更新一下你这边,并确认现在一切正常?

1 个赞

此主题已在 4 天后自动关闭,不再允许新回复。