Hilfe, ich verstehe Bildkompression

Ich bin mir nicht ganz sicher, wie die Bildkomprimierung in Discourse funktioniert. Klären Sie mich auf.

  • Ich habe ein Bild mit 2392x884 und 214 KB hochgeladen, und die Auflösung blieb gleich.
  • Ich habe ein Bild mit 3200x1800 und 1,7 MB hochgeladen, und die Auflösung wurde auf den Wert von composer media optimization image resize dimensions threshold heruntergeregelt.

Bei einer Einstellung von 1280 Breite hatte ich erwartet, dass alle Bilder auf diese Breite skaliert werden. Es scheint jedoch, dass composer media optimization image bytes optimization threshold den Ausschlag gibt.

  • Mein erstes Bild war unter 524 KB, daher wurde es nicht verändert.
  • Das zweite Bild war über 524 KB, daher wurde es verändert.

Wenn ich das richtig verstehe, gibt es eine Möglichkeit, alle hochgeladenen Dateien auf 1280 Breite zu reduzieren?

Hier sind meine Einstellungen zur Bestätigung:

max image size kb = 4096

Vielleicht diesen Schwellenwert sehr niedrig einstellen?

4 „Gefällt mir“

Da das Thema sehr allgemein gehalten ist, beginne ich kein neues Thema :kissing_face_with_smiling_eyes:, aber was bedeutet client-side optimization in der Praxis – trifft das Betriebssystem des Geräts eine Entscheidung, ob es etwas tut oder nicht? Aber das führt doch dazu, dass ein riesiges Bild auf ein Gerät übertragen werden muss, bevor seine Größe auf ein vernünftiges Maß reduziert wird, oder bin ich jetzt völlig auf dem Holzweg?

Nach dem Testen ist es korrekt :slight_smile:
Ich glaube, @pfaffman’s Lösung ist der richtige Weg, um das zu erreichen, was Sie wollen.

Lange Erklärung: Faster (and smaller) uploads in Discourse with Rust, WebAssembly and MozJPEG
Kurze Erklärung: Große Bilder werden auf Ihrem Gerät (via Javascript) verkleinert/komprimiert, bevor sie an Discourse gesendet werden.

3 „Gefällt mir“

Stimmt, das funktioniert in diese Richtung. Nun, das ist eine viel intelligentere Methode als die Optimierung in die andere Richtung :man_facepalming:

Danke.

Das habe ich gestern Abend vor dem Posten versucht und das scheint der Schlüssel zu sein.

Hier ist die Sache:

composer media optimization image bytes optimization threshold

  • 524288 (Standardeinstellung) = Gute Bildqualität, 1920px.
  • 200000 Einstellung = Verschlechtertes Bild, da die Auflösung von 1920 auf 1280 reduziert wird.

Heute Morgen habe ich auf meinem Desktop dasselbe Bild (2392px) genommen, es auf 1280px verkleinert und es ist auch etwas schlechter geworden. Die Verschlechterung, die ich nicht umgehen kann, ist ein Produkt der Reduzierung der Auflösung von 2392px auf 1280px. Es hat jedoch die Bildgröße um das Vierfache reduziert.

Hinweis: .HEIC-Fotos gelten nicht nach denselben Regeln. Ein 4032px .HEIC wurde auf 2016px reduziert. Ich weiß also nicht, wie diese Einstellung angewendet wurde.

Alles in allem denke ich, dass ich es nach einigem Ausprobieren verstanden habe. Ich werde die Standardeinstellungen verwenden, ich mag die zusätzliche Schärfe eines 1920px-Fotos gegenüber dem 1280px.

Hoffentlich hilft das jemandem weiter.

Bearbeiten: Ich habe composer media optimization image bytes optimization threshold von der Standardeinstellung 524288 auf 200000 reduziert. Mir ist aufgefallen, dass beim Hochladen einer einfachen .png-Datei mit 1220px @ 414kb nur eine Dateigröße von 406kb resultierte. Durch die Reduzierung der oben genannten Einstellung auf 200000 wurde die Dateigröße von 414kb auf 201kb reduziert. Die Auflösung blieb unverändert.

Ich weiß also nicht, was sonst noch durch diese Einstellung ausgelöst wird, aber eindeutig etwas anderes, um die Bildgröße weiter zu reduzieren.

Ich finde das Diagramm im Blogbeitrag hilfreich:

X → composer media optimization image bytes optimization threshold
Y → composer media optimization image resize dimensions threshold
Z → composer media optimization image resize width target

6 „Gefällt mir“

Ich fürchte, ich bin dumm, weil ich diesen Teil beim Betrachten der Definitionen der Einstellungen nicht ganz verstehe:

composer_media_optimization_image_dimensions_resize_threshold: Standard 1920
Mindestbildbreite, um eine clientseitige Größenänderung auszulösen

composer_media_optimization_image_dimensions_resize_target: Standard 1920
Bilder, die breiter als composer_media_optimization_image_dimensions_resize_threshold sind, werden auf diese Breite skaliert.
Muss ≥ diesem Schwellenwert sein.

Dieser Teil speziell:

Muss ≥ diesem Schwellenwert sein.

Sollte es nicht ≤ sein? Ich verstehe nicht, warum es auf eine höhere Breitenwert als der Schwellenwert skaliert werden sollte :thinking:

Auch in der Beschreibung derselben Einstellung ist die erste Einstellung falsch benannt:

composer_media_optimization_image_dimensions_resize_threshold

Der richtige Name ist “Composer media optimization image resize dimensions threshold” (“resize dimensions”, nicht “dimensions resize”).