Ein Wiki privater Natur

resize_images

Bildgröße reduzieren und thumbnail generieren.
shrink-tux.png
In wiki.js kann man komfortabel Bilder inkludieren.
Die Größe, also sowohl die Auflösung als auch die Dateigröße ist oft nicht optimal.
Klar, man kann die Bilder skalieren, ganz nach Markdown Methode mit =1234x Pixel
Funktioniert, aber an der Dateigröße ändert das natürlich nichts.

resize_images.sh

#!/bin/bash
# resize_images.sh
# by bed
# $Revision: 1.3 $
# das Skript zeigt die Ursprungsgröße des Bildes an und das 1280x-Bild nur dann generieren, 
# wenn die Breite des Originals größer als 1280 Pixel ist.
# ausserdem wird ein thumbnail generiert
# Wir verwenden identify -format "%w %h" und parsen die Breite und Höhe mit awk.
# Die Bedingung überprüft die Breite des Bildes korrekt.
# Überprüfen, ob ein Argument übergeben wurde
if [ "$#" -ne 1 ]; then
  echo "Usage: $0 <image_file>"
  exit 1
fi

# Datei und Verzeichnisnamen extrahieren
input_file="$1"
base_name=$(basename "$input_file")
dir_name=$(dirname "$input_file")

# Neue Dateinamen definieren
output_file_1280="${dir_name}/${base_name%.*}_1280x.${base_name##*.}"
output_thumbnail="${dir_name}/${base_name%.*}_thumbnail.${base_name##*.}"

# Ursprungsgröße ermitteln
original_info=$(identify -format "%w %h" "$input_file")
original_width=$(echo "$original_info" | awk '{print $1}')
original_height=$(echo "$original_info" | awk '{print $2}')

echo "Originalgröße: ${original_width}x${original_height}"

# Bildgröße überprüfen und ggf. verkleinern
if [ "$original_width" -gt 1280 ]; then
  convert "$input_file" -auto-orient -resize 1280x1024\> -strip -define jpeg:extent=256kb "$output_file_1280"
  echo "Großes Bild generiert: $output_file_1280"
else
  echo "Das Bild ist kleiner oder gleich 1280px in der Breite, kein großes Bild erforderlich."
fi

# Thumbnail generieren mit transparentem Hintergrund
convert "$input_file" -auto-orient -resize 150x150\> -gravity center -background transparent -extent 150x150 -strip "$output_thumbnail"
echo "Thumbnail generiert: $output_thumbnail"