この問題について調査しました。
要するに、あなたのファイルは、この種のファイルと同じシグネチャで始まるため、JPEGとして検出されています。
Discourseでこの動作を修正することは可能ですが、変更が必要です。(最後に参照)
技術的な詳細をいくつか示します。
この問題はここで始まります:
FastImageライブラリはファイルを開き、タイプとサイズを決定します。
予想どおり、JPEGというタイプが返されます。
JPEGシグネチャを見ると、次のようになります。
JPEGマーカー
詳細情報:List of file signatures - Wikipedia
JPEG - Wikipedia
常に次のマーカーバイトで始まります:FF D8
サンプルファイルをHexエディタで確認すると、同じように始まっていることがわかります。
次に、FastImageがJPEGをどのように検出するかを見ると、ここで確認できます。
ただし、必要なバイトがすべて存在しないため、画像情報を抽出することはできません。
Discourseでこの問題をどのように修正しますか?
FastImageのコードを見ると、渡すことができる便利なオプションがあります。
このオプションを使用すると、エラー(SizeNotFound、ImageFetchFailure、CannotParseImage、UnknownImageType、BadImageURI)が発生しても画像情報は返されず、ファイルは画像として検出されなくなります。
@image_info =
begin
FastImage.new(@file, :raise_on_failure => true)
rescue StandardError
nil
end
...
is_image ||= @image_info && FileHelper.is_supported_image?("test.#{@image_info.type}")
その後、機能するはずです:
後でPRを作成できます。このオプションの使用は理にかなっています。