サムネイル生成時にDiscourseの上下のピクセルが失われます

投稿に画像を添付すると、Discourse は表示に適したサムネイルを作成するために画像をリサイズします。

その際、常に画像の上下のピクセル行が欠落してしまうバグがあるようです。

大きな問題ではありませんが、細い枠線を持つ画像が奇妙に見えてしまいます(例:Windows 10 のソフトウェアのスクリーンショットの多くは、ウィンドウの下端が表示されていないため、正しく見えないことがあります)。

観察結果:

  • アスペクト比によるものではないようです。非常に幅広または縦長の画像の意図的なクロッピングではないと考えており、これはバグのようです。

  • 実際のサムネイル画像リソース自体にピクセルが欠落していることを確認しました。つまり、ブラウザで表示される際ではなく、サーバー側でサムネイルが生成される時点で発生しているようです。

  • 追記:上下のピクセルが完全に消えているわけではなく、非常にぼやけたり薄くなったりしているため、実質的に消えているのと同じ状態のようです。リサイズアルゴリズムが画像の端をどのように処理しているかに関係しているのかもしれません。縦長のスクリーンショットなど、左右の端でこの現象が起きることは決してないようです。

  • 全サイズ画像をクリックすると、少なくともそれは正しく表示されます。

この例の画像が Discourse フォーラム上で同様の問題を再現してくれることを願っています:

これは本来、すべての側に 1 ピクセルの赤い枠線を持つ白い画像であるはずです。ここで問題が発生している場合、全サイズ画像をクリックするまで、左右の枠線しか表示されません。

(追記:確かにここで発生しているようです。)

もしここで発生しない場合、私の自身のフォーラムで見た結果は以下の通りです:

これをテストする際は、投稿後少し待ってから(場合によってはスレッドをリフレッシュして)確認する必要があります。サーバー側でサムネイルが生成されるまでに数秒かかるためです。

「いいね!」 4

はい、私もこの件にはずいぶん前から気づいています。どう対処できるかはわかりません。

「いいね!」 1

興味深いですね。上、左、右は表示されますが、下は表示されません。

chrome://gpu
Chrome バージョン Chrome/87.0.4280.141
オペレーティングシステム Windows NT 10.0.19042
GL_RENDERER ANGLE (Intel(R) HD Graphics 620 Direct3D11 vs_5_0 ps_5_0)
「いいね!」 1

スクリーンサイズによって異なるアセットが異なるクライアントに提供されるかどうか気になります。

上記の投稿/画像を F12 で簡単に確認したところ、元の画像に加えて 2 つのアセットが見つかりました。

  • 元の画像(1416 x 946)/original/3X/e/2/e2c5f032e18fa374c0593af71cf25d3499826289.png。変更は加えられていません。直接 URL

  • 小型バージョン(1380 x 920)optimized/3X/e/2/e2c5f032e18fa374c0593af71cf25d3499826289_2_1380x920.png。上下の端が(ほぼ)見えないようになっています。直接 URL

  • さらに小型のバージョン(640x460)optimized/3X/e/2/e2c5f032e18fa374c0593af71cf25d3499826289_2_690x460.png。下側の境界線は全くありませんが、左、上、右の境界線は残っています。直接 URL

ImageMagick の引数でスケーリングアルゴリズムや端のピクセルの扱いを調整できるかもしれませんが、もちろん変更を加えるとこのケースは改善されても、他の状況では悪化する可能性があります。

「いいね!」 1

はい、私も同じ考えです。これはスケーリングアルゴリズムの問題ですね。元のバージョンが保持されている限り、ここには深刻な問題は見当たりませんので、機能リクエストとして移動させます。

「いいね!」 4