Add kontaktbogen.sh
This commit is contained in:
parent
82743a63c7
commit
526b92c0f2
1 changed files with 67 additions and 0 deletions
67
kontaktbogen.sh
Normal file
67
kontaktbogen.sh
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
#!/bin/bash
|
||||
# ===============================================
|
||||
# Kontaktbogen Generator für sehr große Bildmengen
|
||||
# ===============================================
|
||||
# Input: previews/*.jpg
|
||||
# Output: kontaktbogen_pageX.jpg
|
||||
# Optimiert für A0 300 dpi (9933x14043 px)
|
||||
# ===============================================
|
||||
|
||||
INPUT_DIR="previews"
|
||||
OUTPUT_PREFIX="kontaktbogen"
|
||||
DPI=300
|
||||
A0_WIDTH=9933
|
||||
A0_HEIGHT=14043
|
||||
SPACING=5 # px Abstand zwischen Bildern
|
||||
LABELS=true # true = Dateinamen anzeigen
|
||||
MAX_THUMB_HEIGHT=500 # maximale Höhe der Kacheln
|
||||
|
||||
# alle JPGs numerisch sortieren
|
||||
FILES=($(ls -1v "$INPUT_DIR"/*.jpg))
|
||||
NUM_IMAGES=${#FILES[@]}
|
||||
echo "Gefundene Bilder: $NUM_IMAGES"
|
||||
|
||||
# Max. Bilder pro Seite: Memory-Management
|
||||
# Empfohlen: max 1000 Bilder pro Montage, bei 13k Bildern -> 13 Seiten
|
||||
IMAGES_PER_PAGE=1000
|
||||
TOTAL_PAGES=$(( (NUM_IMAGES + IMAGES_PER_PAGE -1)/IMAGES_PER_PAGE ))
|
||||
echo "Bilder pro Seite: $IMAGES_PER_PAGE, Gesamte Seiten: $TOTAL_PAGES"
|
||||
|
||||
# Kontaktbögen erzeugen
|
||||
for (( page=0; page<TOTAL_PAGES; page++ ))
|
||||
do
|
||||
START=$(( page * IMAGES_PER_PAGE ))
|
||||
PAGE_FILES=("${FILES[@]:START:IMAGES_PER_PAGE}")
|
||||
|
||||
# Optimales Raster berechnen (quadratisch für A0)
|
||||
NUM_PAGE_IMAGES=${#PAGE_FILES[@]}
|
||||
COLS=$(awk -v n=$NUM_PAGE_IMAGES -v w=$A0_WIDTH -v h=$A0_HEIGHT 'BEGIN { print int(sqrt(n*w/h)+0.5) }')
|
||||
ROWS=$(awk -v n=$NUM_PAGE_IMAGES -v c=$COLS 'BEGIN { print int((n/c)+0.9999) }')
|
||||
|
||||
# Thumbnail Größe
|
||||
THUMB_WIDTH=$(( A0_WIDTH / COLS - SPACING ))
|
||||
THUMB_HEIGHT=$(( A0_HEIGHT / ROWS - SPACING ))
|
||||
|
||||
OUTPUT_FILE="${OUTPUT_PREFIX}_page$((page+1)).jpg"
|
||||
echo "Erstelle $OUTPUT_FILE mit $NUM_PAGE_IMAGES Bildern (Raster: ${COLS}x${ROWS})"
|
||||
|
||||
if [ "$LABELS" = true ]; then
|
||||
montage "${PAGE_FILES[@]}" \
|
||||
-thumbnail ${THUMB_WIDTH}x${THUMB_HEIGHT}\> \
|
||||
-geometry +${SPACING}+${SPACING} \
|
||||
-background white \
|
||||
-pointsize 12 \
|
||||
-label %f \
|
||||
-tile ${COLS}x${ROWS} \
|
||||
"$OUTPUT_FILE"
|
||||
else
|
||||
montage "${PAGE_FILES[@]}" \
|
||||
-thumbnail ${THUMB_WIDTH}x${THUMB_HEIGHT}\> \
|
||||
-geometry +${SPACING}+${SPACING} \
|
||||
-background white \
|
||||
-tile ${COLS}x${ROWS} \
|
||||
"$OUTPUT_FILE"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Fertig! Alle Kontaktbögen erstellt."
|
||||
Loading…
Add table
Add a link
Reference in a new issue