Files
Photography/entrypoint.sh
Kroonk ea15be0368 Fix Thumbnail-Generierung (magick statt convert) und DB-Migration fuer role-Spalte
- entrypoint.sh: ImageMagick 7 nutzt 'magick' statt 'convert', Auto-Detection
- database.js: Migration fuer role-Spalte bei bestehender DB (ALTER TABLE)
- main.js: Fallback auf Vollbild wenn Thumbnail fehlt (error handler)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 19:40:18 +02:00

67 lines
1.8 KiB
Bash

#!/bin/sh
FULLS_DIR="/app/public/images/fulls"
THUMBS_DIR="/app/public/images/thumbs"
# ImageMagick 7 (Alpine) nutzt "magick" statt "convert"
if command -v magick >/dev/null 2>&1; then
IM_CMD="magick"
elif command -v convert >/dev/null 2>&1; then
IM_CMD="convert"
else
echo "FEHLER: Weder magick noch convert gefunden! Thumbnails koennen nicht erzeugt werden."
IM_CMD=""
fi
# Thumbnails fuer einen Quell- und Zielordner generieren
generate_thumbs_for_dir() {
src_dir="$1"
dst_dir="$2"
[ -z "$IM_CMD" ] && return
mkdir -p "$dst_dir"
for img in "$src_dir"/*; do
[ -f "$img" ] || continue
filename=$(basename "$img")
ext=$(echo "${filename##*.}" | tr '[:upper:]' '[:lower:]')
case "$ext" in
jpg|jpeg|png|gif|webp) ;;
*) continue ;;
esac
if [ ! -f "$dst_dir/$filename" ] || [ "$img" -nt "$dst_dir/$filename" ]; then
echo "Thumbnail erstellen: $dst_dir/$filename"
$IM_CMD "$img" -resize 512x512 -quality 80 "$dst_dir/$filename"
if [ $? -ne 0 ]; then
echo "WARNUNG: Thumbnail fehlgeschlagen fuer $filename"
fi
fi
done
}
generate_all_thumbs() {
# Root-Bilder
generate_thumbs_for_dir "$FULLS_DIR" "$THUMBS_DIR"
# Unterordner (Kunden-Ordner)
for dir in "$FULLS_DIR"/*/; do
[ -d "$dir" ] || continue
foldername=$(basename "$dir")
generate_thumbs_for_dir "$dir" "$THUMBS_DIR/$foldername"
done
}
echo "=== Mischkomposition - Starte Thumbnail-Generierung ==="
generate_all_thumbs
echo "=== Thumbnail-Generierung abgeschlossen ==="
# Hintergrund-Prozess: Alle 60 Sekunden nach neuen Bildern suchen
(while true; do
sleep 60
generate_all_thumbs
done) &
# Node Server starten
cd /app && node backend/server.js