#!/bin/bash # # ########## Variablendefinitionen ########## ALL=$@ POSITION=$(expr `expr index "$ALL" "/"` - 1) FILE_ALL=${ALL:$POSITION} FILE_COUNTER=$(expr $# - 4) FILE_MINI="ReSized" ########## Funktionsdefinitionen ########## do_print_debug() { echo "" echo "--------------- Debugging an ----------------" echo "" echo "ALL = "$ALL echo "POSITION = "$POSITION echo "FILE_ALL = "$FILE_ALL echo "FILE_COUNTER = "$FILE_COUNTER echo "COUNTER = "$COUNTER echo "" echo "--------------- Debugging aus ---------------" echo "" } do_show_files() { echo " --> Verarbeite $FILE_COUNTER Dateien ..." COUNTER=1 for ROW in $FILE_ALL do echo " "$ROW" ($COUNTER)" COUNTER=$(( $COUNTER + 1 )) done } do_convert_to_grayscale_files() { if [ "$FILE_EDITED" = "GrayScaled" ] then echo "" echo " --> Konvertiere ausgewählte Bilder nach S/W ..." convert collage_$GRID.jpg -colorspace Gray collage_"$FILE_EDITED"_$GRID.jpg RC=$? do_print_rc_message $RC elif [ "$FILE_EDITED" = "UnChanged" ] then echo "" echo " --> Ausgewählte Bilder bleiben unverändert ..." mv collage_$GRID.jpg collage_"$FILE_EDITED"_$GRID.jpg RC=$? do_print_rc_message $RC fi } do_del_metadata_from_files() { echo "" echo " --> Metadaten (EXIF etc.) in den temporären Bilder entfernen ..." jhead -de -di -dx -q $FILE_MINI-*.jpg RC=$? do_print_rc_message $RC } do_resize_files() { echo "" echo " --> Größenanpassung der Bilder an das ausgewählte Format ..." convert -resize $RESOLUTION $FILE_ALL $FILE_MINI.jpg RC=$? do_print_rc_message $RC } do_montage_files() { echo "" echo " --> Ausgwewählte Bilder zur Collage zusammenstellen ..." montage -tile $COLUMN -geometry 100% "$FILE_MINI-*" collage_"$GRID".jpg RC=$? do_print_rc_message $RC } do_set_montage_param() { if [ "$GRID" = "1x2" ] then RESOLUTION="1920x600!" COLUMN="1" elif [ "$GRID" = "1x3" ] then RESOLUTION="1920x400!" COLUMN="1" elif [ "$GRID" = "2x1" ] then RESOLUTION="960x1200!" COLUMN="2" elif [ "$GRID" = "2x2" ] then RESOLUTION="960x600!" COLUMN="2" elif [ "$GRID" = "2x3" ] then RESOLUTION="960x400!" COLUMN="2" elif [ "$GRID" = "2x4" ] then RESOLUTION="960x300!" COLUMN="2" elif [ "$GRID" = "3x1" ] then RESOLUTION="640x1200!" COLUMN="3" elif [ "$GRID" = "3x2" ] then RESOLUTION="640x600!" COLUMN="3" elif [ "$GRID" = "3x3" ] then RESOLUTION="640x400!" COLUMN="3" elif [ "$GRID" = "3x4" ] then RESOLUTION="640x300!" COLUMN="3" elif [ "$GRID" = "3x5" ] then RESOLUTION="640x240!" COLUMN="3" elif [ "$GRID" = "3x6" ] then RESOLUTION="640x200!" COLUMN="3" elif [ "$GRID" = "4x3" ] then RESOLUTION="480x400!" COLUMN="4" elif [ "$GRID" = "4x4" ] then RESOLUTION="480x300!" COLUMN="4" elif [ "$GRID" = "4x5" ] then RESOLUTION="480x240!" COLUMN="4" elif [ "$GRID" = "4x6" ] then RESOLUTION="480x200!" COLUMN="4" elif [ "$GRID" = "5x2" ] then RESOLUTION="384x600!" COLUMN="5" elif [ "$GRID" = "5x3" ] then RESOLUTION="384x400!" COLUMN="5" elif [ "$GRID" = "5x4" ] then RESOLUTION="384x300!" COLUMN="5" elif [ "$GRID" = "5x5" ] then RESOLUTION="384x240!" COLUMN="5" elif [ "$GRID" = "5x6" ] then RESOLUTION="384x200!" COLUMN="5" elif [ "$GRID" = "6x2" ] then RESOLUTION="320x600!" COLUMN="6" elif [ "$GRID" = "6x3" ] then RESOLUTION="320x400!" COLUMN="6" elif [ "$GRID" = "6x4" ] then RESOLUTION="320x300!" COLUMN="6" elif [ "$GRID" = "6x5" ] then RESOLUTION="320x240!" COLUMN="6" elif [ "$GRID" = "8x3" ] then RESOLUTION="240x400!" COLUMN="8" else echo "Falschen Wert ($GRID) angegeben!" exit 2 fi } do_del_temp_files() { echo "" echo " --> Lösche temporäre Dateien ..." for FILE_DEL in $FILE_MINI-*.jpg do if [ -e $FILE_DEL ] then rm $FILE_DEL RC=$? else RC="1" fi done do_print_rc_message $RC if [ -e collage_$GRID.jpg ] then rm collage_$GRID.jpg RC=$? do_print_rc_message $RC fi } do_print_rc_message() { if [ $1 -eq 0 ] then echo " --> OKAY" elif [ $1 -gt 0 ] then echo " --> ERROR" fi } do_check_marked_files() { ROW="" POS_OF_X=$(expr index "$GRID" x) ROW=${GRID:POS_OF_X} FROM_BEGIN=$(expr $(expr index "$GRID" x) - 1) COL=${GRID:0:FROM_BEGIN} FILES_CALCULATED=$(($COL * $ROW)) if [ $FILE_COUNTER -lt $FILES_CALCULATED ] then echo "" echo " --> Zu wenige Dateien ($FILE_COUNTER) markiert. Für das Format $GRID werden $FILES_CALCULATED Dateien benötigt" RC="1" do_print_rc_message $RC break elif [ $FILE_COUNTER -gt $FILES_CALCULATED ] then echo "" echo " --> Zu viele Dateien ($FILE_COUNTER) markiert. Für das Format $GRID werden $FILES_CALCULATED Dateien benötigt" RC="1" do_print_rc_message $RC break elif [ $FILES_CALCULATED -eq $FILE_COUNTER ] then echo "" echo " --> Anzahl der Dateien ($FILE_COUNTER) für das gewählte Format $GRID ist korrekt" RC="0" do_print_rc_message $RC fi } usage() { echo "Syntax: $0 [-h | -g | -r ]" echo "" echo " -h (help): diese Hilfeseite" echo " -g (grayscale): S/W-Bilder in Collage verwenden" echo " -r (raster): Angabe der verwendeten Bilder in Spalten x Zeilen" echo "" exit 1 } if [ $# -eq 0 ]; then usage fi ########## Hauptprogramm ########## while getopts hg:r:lf: OPTION do case $OPTION in h) usage ;; g) if [ "$OPTARG" = "yes" ] then FILE_EDITED="GrayScaled" elif [ "$OPTARG" = "no" ] then FILE_EDITED="UnChanged" else echo " --> Argument $OPTARG unbekannt" break fi ;; r) GRID=$OPTARG do_show_files do_check_marked_files do_set_montage_param do_resize_files do_del_metadata_from_files do_montage_files do_convert_to_grayscale_files do_del_temp_files ;; \?) echo "Falsche Option $OPTION angegeben!" ;; esac done shift `expr $OPTIND - 1` echo "" echo " Fenster schließen mit Taste RETURN" read ret exit 0 #EOF