将 SVG 图像上传到帖子(包含在内)时,如果主 <svg> 元素中的 height 或 width 属性的数值尺寸(忽略相关单位)小于 “1”,则会失败并显示以下消息:
抱歉,我们无法确定图像的大小。也许您的图像已损坏?
似乎代码会在关联 FIX - use ImageMagick to determine size of SVG images by jbrw · Pull Request #12230 · discourse/discourse · GitHub 的利用单位信息计算实际显示尺寸的逻辑有机会执行之前,先检查 height 和 width 属性并拒绝上传。在论坛中搜索
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 议题中的附件一致。