piccop.sh - Bashskript um Bilder zu bearbeiten

Autor : Christopher Pope
Beschreibung : Skript durchläuft einen Ordner und konvertiert die Bilddateien in einen anderen
Ordner mithilfe vom imagemagick die Bilder werden automatisch durchnummeriert

Wie benutzt man das Skript ?

Es gibt 2 Möglichkeiten dieses Skript zu verwenden

1.) starten durch ./piccop.sh sämtliche benötigte Informationen werden im Terminal abgefragt

2.) starten über Parameter
piccop.sh [Startverzeichnis] [Zielverzeichnis] [StartZähler oder a] [Auflösung] [löschen 0/1]
z.B.
piccop.sh /home/user/bilder/wallpaper/ /home/user/bilder/wallies 1 1024x768^ 1

wird als StartZähler a als Parameter übergeben wird die höchste Zahl im Zielverzeichnis ermittel +1 addiert
und als Start Zähler verwendet.

Bei Auflösung können auch die convert -resize Befehle verwendet werden mehr dazu unter : http://www.imagemagick.org/Usage/resize/#resize

Danke an :
Greebo , paddel , Barabbas , theinlein , Vain , user unknown von ubuntuusers.de für ihre Tipps und Hilfestellungen

Download : Download piccop.sh


#!/bin/bash
#
# Autor : Christopher Pope
# Beschreibung : Skript durchläuft einen Ordner und konvertiert die Bilddateien in einen anderen 
#		 Ordner mithilfe vom imagemagick die Bilder werden automatisch durchnummeriert
#
# Wie benutzt man das Skript ?
#
# Es gibt 2 Möglichkeiten dieses Skript zu verwenden 
# 
# 1.) starten durch ./piccop.sh sämtliche benötigte Informationen werden im Terminal abgefragt
#
# 2.) starten über Parameter
#     piccop.sh [Startverzeichnis] [Zielverzeichnis] [StartZähler oder a] [Auflösung] [löschen 0/1]
#     z.B.
#     piccop.sh /home/user/bilder/wallpaper/ /home/user/bilder/wallies 1 1024x768^ 1 
#
#     wird als StartZähler a als Parameter übergeben wird die höchste Zahl im Zielverzeichnis ermittel +1 addiert 
#     und als Start Zähler verwendet.
#
#     Bei Auflösung können auch die convert -resize Befehle verwendet werden mehr dazu unter : http://www.imagemagick.org/Usage/resize/#resize
#
# Danke an :
# Greebo , paddel , Barabbas , theinlein , Vain , user unknown von ubuntuusers.de für ihre Tipps und Hilfestellungen
#
blue=$(tput setaf 4)		# Blue
green=$(tput setaf 2)		# Green
red=$(tput setaf 1)	        # Red
bold=$(tput bold)      		# bold
white=$(tput sgr0)		# Text Reset auf Default
u=0
clear
echo
if [[ ${#} -lt 1 ]]
 then
	echo "Bitte Startverzeichnis angeben (muss mit / aufhören !)"
	read inp	
	source=$inp
else
	source=$1
fi
if [[ ${#} -lt 2 ]]
 then
	echo -e "Bitte Zielverzeichnis angeben (muss mit / aufhören !)"
	read inp1	
	target=$inp1
else
	target=$2
fi
if [[ ${#} -lt 3 ]]
 then
	echo -e "Bitte Start Zähler angeben"
	read inp2	
	startn=$inp2
else
	startn=$3
	if [[ "$startn" == "a" ]]; then
		hz=$(ls $target -a1 | tail -n 1 | grep -o [1-9][0-9]*)
		hz=$(($hz+1))
		#echo $hz
		startn=$hz
	fi
fi
if [[ ${#} -lt 4 ]]
	then
	echo
	echo -e "Wie groß sollen denn die Bilder nach dem konvertieren sein ?\n"
	echo -e "1024x768 (default)\t\t1"
	echo -e "1280x1024\t\t\t2"
	echo -e "1600x1200\t\t\t3"
	read -n 1 taste
	case $taste in
		1) res=1024x768^;;
		2) res=1280x1024^;;
		3) res=1600x1200^;;
	esac
else
	res=$4
fi
if [[ ${#} -lt 5 ]]
	then
	echo
	echo -e "Soll die Datei nach dem konvertieren gelöscht werden ?"
	echo -e "Ja\t\tj"
	echo -e "Nein\t\tn"
	read -n 1 taste
	case $taste in
		j|J) delete=1;;
		n|N) delete=0;;
	esac
else
	delete=$5
fi
# Zähler setzen
j=$startn
        echo	
	echo ${white}"Vorgang wird gestartet"
	echo "------------------------------------------------------------------------------------------------------------------------------"
	echo "   ${white}Quelle                    : ${bold}${red}$source"
	echo "   ${white}Ziel                      : ${bold}${green}$target"
	echo "   ${white}Start Zähler              : ${bold}${blue}$startn"
	echo "   ${white}Ziel Auflösung            : ${bold}${blue}$res ${white}"
	echo "   ${white}Löschen nach konvertieren : ${bold}${red}$delete ${white}"
	echo "------------------------------------------------------------------------------------------------------------------------------"
	echo
if (test -d $source); then
	if (test -d $target); then
		for file in $(find $source -type f | sort); do
	
			echo ${white}${bold}${blue}$file ${white} \-\-\-\> ${bold}${green}$target$(printf "%04u\n" "$j").jpg
			convert $file -resize $res $target$(printf "%04u\n" "$j").jpg
			if [[ $delete = 1 ]]
				then
				echo "${red}$file ${white} wird gelöscht"
				rm $file
			fi
			j=$(($j+1))
			u=$(($u+1))
		done
		echo
		echo "${white}------------------------------------------------------------------------------------------------------------------------------"
		j=$(($j-1))
		echo "${white} Vorgang wurde abgeschlossen , es wurden ${bold}${green}$u ${white}Dateien konvertiert"
		echo
	else
		echo
		echo "${white}------------------------------------------------------------------------------------------------------------------------------"
		echo "${white}Ziel : ${bold}${red}$target ${white} wurde nicht gefunden"
	fi
else
echo
echo "${white}------------------------------------------------------------------------------------------------------------------------------"
echo "${white}Quelle : ${bold}${red}$source ${white} wurde nicht gefunden"
fi
echo
exit 1

“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)