Bild-Optimierung für Webseiten

Bild-Optimierung für Webseiten

Um die Ladezeit für Websites zu verkürzen, lohnt es sich über Optimierung der eingesetzten Bilder nachzudenken. Es gibt sehr viele Werkzeuge für die Optimierung der Bilder direkt auf dem Linux-Server.

JPEG Optimierung Google Guetzli

Guetzli ist ein JPEG-Encoder, der darauf ausgelegt ist, Bilder mit hoher visueller Qualität und gleichzeitig geringerer Dateigröße zu erzeugen.

Installation unter Ubuntu

Die Installation ist im Terminal mit dem Ubuntu Paketmanager apt sehr einfach

sudo apt update && sudo apt install guetzli -y

Script zur Nutzung

Folgendes Script durchsucht ein Verzeichnis rekursiv nach JPEG Bildern und optimiert diese.

#!/bin/bash
set -euo pipefail

if [ $# -eq 0 ]; then
  echo "Error: no directory given"
  exit 1
fi

DIR=$1
if [ ! -d "$DIR" ]; then
  echo "Error: directory '$DIR' does not exist"
  exit 2
fi

REALDIR=$(realpath "$DIR")
echo "Optimizing directory: $REALDIR"

optimize_with_guetzli() {
  local input="$1"
  local output="$2"
  if guetzli --quality 95 --nomemlimit "$input" "$output" >/dev/null 2>&1; then
    mv "$output" "$input"
    return 0
  else
    rm -f "$output"
    return 1
  fi
}

export -f optimize_with_guetzli

find "$REALDIR" -type f -name "*.jpg" -print0 | while IFS= read -r -d '' IMAGE; do
  echo "Optimizing: $IMAGE"
  echo "Before: $(du -h "$IMAGE" | awk '{print $1}')"

  if optimize_with_guetzli "$IMAGE" "$IMAGE.new"; then
    echo " ... Success (Guetzli)"
  else
    echo " ... Guetzli failed, retrying with ImageMagick"
    TMPPNG="$IMAGE.png"
    if convert "$IMAGE" "$TMPPNG"; then
      if optimize_with_guetzli "$TMPPNG" "$IMAGE.new"; then
        rm "$TMPPNG"
        echo " ... Success (ImageMagick + Guetzli)"
      else
        echo " ... Error: Guetzli failed again on $IMAGE"
        rm -f "$TMPPNG"
      fi
    else
      echo " ... Error: ImageMagick conversion failed for $IMAGE"
    fi
  fi

  echo "After: $(du -h "$IMAGE" | awk '{print $1}')"
done