画像の再圧縮を回避する方法は?

当社は写真フォーラムです。

画像のアップロードを 1.2 MB に制限しつつ、その制限内に収まる画像については再圧縮を一切行わないようにしたいと考えています。

もし画像がそれより大きい場合は、ユーザーに警告し、アップロードを阻止したいと考えています。しかし、その方法が見つかりません。

少し重い画像がアップロードされると、システムが過度にリサイズ・再圧縮を行ってしまい、ユーザーからは「フォーラムが写真を壊してしまった(細部の喪失、色階調の劣化など)」という苦情が寄せられています。

最近追加された画像コンポーズオプションにより、状況はさらに悪化しています。1.2 MB 未満の画像さえも再圧縮されてしまいます。

ユーザーの画像には一切介入したくありません(ユーザー自身が、重量とサイズの制限を考慮して画像を調整する責任があります)。少なくとも、制限に準拠している画像についてはそうしたいと考えています。

この動作を実現するために、オプションをどのように設定するのが最適でしょうか?

制限に準拠していない画像での再圧縮は避けられないとしても、少なくとも制限に準拠している画像では再圧縮を避け、制限を超える画像の圧縮を制御したいと考えています。

フォーラムは画像を過度に圧縮する傾向があり、結果として大型辺が 900 ピクセル、サイズが 200 KB 程度にまで圧縮されてしまいます。

その動作を上書きするには、プラグインが必要になると思います。

あるいは、他の場所にアップロードしてリンクを貼る方法もあります。

MinIO のように、画像を他の場所にアップロードできるプラグインやテーマコンポーネントが存在するようです。それがご希望のものかもしれません。

例として、Azure Blob Storage PluginVideo Upload to YouTube and Vimeo using Theme Component をご覧ください。画像をどこでホストするかを決め、同様のテーマコンポーネントを作成する必要があります。

mmm… 画像は自サーバーに保存したいと考えています。他のサイトでは画像が失われる可能性があり、制御できないためです。

画像処理を完全に無効化できないと想定しています。

システムが、サイズ制限(ファイルサイズ 1.2 MB、長い辺 2048 ピクセル)を満たす画像には手を加えず、制限を超える画像に対してのみ再圧縮の設定を微調整できれば、それで満足です。

最初の目標は達成できたと考えています。ファイルサイズの制限を 1230 KB に設定し、画像コンポーザーの閾値も同じバイト数に設定しました。

これで、それより小さいサイズの画像は再圧縮されなくなったようです(数バージョン前まではこのように動作していました。画像コンポーザーは最近導入されたもののようです)。

しかし、2100 ピクセル、3 MB の画像をアップロードしようとすると、奇妙な結果になります。
900 ピクセル、200 KB 程度にリサイズされたり、別の場合は 1024 ピクセル、500 KB 程度になったりします。
画像の詳細や色調補正が完全に失われてしまいます。

画像コンパイラの制限を 1920 ピクセルに、JPEG 圧縮品質を 90 に設定しました。そのため、そのサイズまで再圧縮されると期待していました(90 の品質と 1920 ピクセルに圧縮しても、1.2 MB の制限を容易に超えない画像でテスト済みです)。
しかし、システムはそれよりもはるかに過度に圧縮し続けています。

サイト設定で、画像の最大サイズ、幅、高さを編集しましたか?まずそこを確認してください。

遅くなり申し訳ありません。回答に気づきませんでした。

はい、以前説明したとおり、1.2MBの制限と4MPの解像度制限を設けています。

画像がその制限を満たさない場合、システムは画像を強く圧縮します。時には、1920ピクセルまたは2048ピクセルでアップロードされた画像が600ピクセルまたは1000ピクセル幅になることもあります。

訓練された目には、品質の低下は明らかです。テクスチャの欠落、ハロ、色のグレーディングの悪さなどです。

最近のアップグレードにより、制限を満たす画像でさえシステムによる「改善」が行われ、品質が低下して圧縮されます。

「元のjpg品質を再圧縮」を調整し、再圧縮を防ぐことを期待して100%に設定しました。これは機能しているようですが、それでも再圧縮されるかどうかはわかりません(少なくとも目に見える品質の低下はありません)。

composer media optimization image bytes optimization threshold を調整して、そのサイズ以下の画像のクライアント側サイズ最適化を無効にする必要があります。デフォルトでは500KBを超える画像に適用されるため、この設定を1.2MBに増やす必要があります。

これらのサイト設定の説明を改善して、仕組みをより明確にするべきでしょうか? :thinking:

そうだと思いますが、コピーライティングは私の得意分野ではありません。

現在は

クライアントサイドの最適化をトリガーする最小画像ファイルサイズ

変更後は

アップロード前にリサイズ/圧縮をトリガーする最小画像ファイルサイズ

でしょうか?

多分

これより大きい画像はクライアントによってリサイズおよび圧縮されます