Composer の画像リサイズしきい値

Client side image optimization enabled by default の議論を続けます:

私は地域の写真家向けのセルフホスト型 Discourse インスタンスの管理者です。ここでは主に高品質なメディアをアップロードしています。コンポーザーで画像をリサイズする際のデフォルトの幅を変更したいと考えていますが、設定項目が見つかりません。

Ask Bot は composer media optimization image resize dimensions threshold を確認するよう指示しましたが、この設定が廃止されたか非表示になっているのではないかと疑っています。現在見つけられる設定は composer media optimization image enabled のみです。

本質的には、コンポーザーでアップロードされた画像を 1920px ではなく最大 1440px の幅にリサイズしたいと考えています。また、画像の長い辺のみをリサイズするオプション(例えば、縦長の画像の場合は幅ではなく高さでリサイズする)があれば理想的です。


バージョン 2026.5.0-latest ( af1090fa6f )

これは非表示設定のため、Rails コンソールで変更できます。

ただし、ここにも追加する必要があると思います:

変更方法:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.composer_media_optimization_image_resize_dimensions_threshold = 1440
exit

この変更を行った後、アプリの再ビルドが必要ですか?

いいえ、ページを更新する必要があります。

正しく設定されているか確認する方法はありますか?ハードリフレッシュ(Ctrl+F5)を試しましたが効果が見られず、仕方なくアプリを再構築しましたが、それでも状況は変わりませんでした。画像は依然として1920pxまで縮小されてしまいます。

/var/www/discourse# rails c
Loading production environment (Rails 8.0.5)
discourse(prod)> SiteSetting.composer_media_optimization_image_resize_dimensions_threshold
=> 1440

通常、サイト設定を変更するときは再起動を行います。

./launcher restart app

Rails コンソールで再度、SiteSetting.composer_media_optimization_image_resize_dimensions_threshold と入力すると、どのような値が返されますか?

私はこの特定の変更をテストしましたが、更新されました。

1440 が返されます

この画像の元の解像度は 3089x2048 ですが、今テストとしてアップロードした後のリサイズ結果がこちらです。

composer_media_optimization_image_resize_dimensions_threshold は、いつトリガーするかを制御します。

1440 にリサイズしたい場合は、composer_media_optimization_image_resize_width_target にその値を設定する必要があります。

うーん、ダメですね。

これらの値を両方とも 1440 に設定し、念のため /var/discourse/launcher rebuild app を実行しましたが、画像は依然として 1920 にリサイズされています。

編集:実際、ビルドを実行して Rails に戻ると、2 つの変数が再び未定義に戻ってしまいました。デフォルト値に上書きしているものがあるのでしょうか?

実際、Rails から退出してすぐに戻っても、以下のような表示になります:

discourse(prod)> composer_media_optimization_image_resize_dimensions_threshold
(discourse):1:in '<main>': undefined local variable or method 'composer_media_optimization_image_resize_dimensions_threshold' for main (NameError)

その設定のチェック方法ではありません。サイト設定名の前に SiteSetting. を付ける必要があります。

これで解決しました!ただ、解像度の比率を完全に間違えていましたね。頭の中では高さの1440pだと思っていたのに、実は幅の方だったんです :stuck_out_tongue: 画像が以前よりもさらに小さく出力されているなんて、驚きましたよ。

幅の切り替えしか用意されていないので、おそらく「2560」のことで間違いないでしょうか?

また、もう一方の次元(高さ)でも操作できるようにしたいというご要望はよくわかります。当初、幅のみを対象としたのは、すでに切り替えオプションが多すぎるため、妥協して決めたことです。近年ではチームがさらに設定を隠すようにしているため、それ以上機能を追加するのは難しい状況です。

もしかすると、幅か高さのいずれか大きい方の辺に対して動作するように変更し、動的に選択できるようにするのはどうでしょうか?