寸法が1未満のSVG画像はアップロードに失敗します

SVG画像を、メインのsvg要素のheight属性またはwidth属性のどちらかが「1」未満の数値サイズ(関連する単位は無視)で設定された投稿にアップロード(含める)すると、以下のメッセージで失敗します。

お詫び申し上げますが、画像のサイズを特定できませんでした。画像が破損している可能性があります。

どうやら、height属性とwidth属性がチェックされ、実際の表示サイズを計算するために単位情報を参照するコード(https://github.com/discourse/discourse/pull/12230)が実行される前に、アップロードが却下されているようです。以下の検索クエリでフォーラムを検索すると、現在9件の結果が返ってきます。

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

How to include fontawesome icons in posts? という投稿も同様の原因によるものと思われますが、その報告は古く、修正済みとされています。

調査したところ、これは使用されているfastimageライブラリに起因する問題のようです。SVG images with small dimension detected as zero pixels, ignoring units という件名で同ライブラリ側にissueを作成し、ここで参照しています。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 issueの添付ファイルと一致します。

image2

image4

問題の詳細な説明をありがとうございます。

私もこの問題を再現することができました。おそらく、このプルリクエストがご指摘の問題を解決するはずです。

編集:不思議ですね…ローカルではテストがパスするのですが、プッシュすると失敗してしまいます。明日詳しく調べてみます。

「いいね!」 2

先週マージされました。

@µMerlin さん、ご自身の環境で更新を行い、問題ないか確認していただけますでしょうか?

「いいね!」 1

このトピックは4日後に自動的に閉鎖されました。新しい返信は受け付けられません。