Duefi
Enthusiast
Thread Starter
- Mitglied seit
- 01.08.2004
- Beiträge
- 1.159
Hallo.
Ich hab ein Batch-Skript für Linux geschrieben.
Es soll das ewig einzelne Bildbearbeiten und anschließendes Hochladen für Foren erleichtern. Es bearbeitet einen Ordner von Bildern und lädt diesen dann auf einen Server hoch.
Das Skript basiert auf imagemagick. Es ist multifunktional ausgelegt. Die einzelnen Funktionen können getrennt an und abgeschaltet werden.
Liste der Funktionen
Voraussetzungen:
Imagemagick und ssh bzw. openssh
Installation:
Angehängten Code in eine Textdatei einfügen.
Ausführbar machen mittels chmod 755 %datei%
Ausführung:
./%datei% pfad/zum/Ordner
To-Do:
FTP und xs.to als Upload-Möglichkeit hinzufügen.
Code verbessern.
Ich würde mich freuen, wenn ihr das Skript mal ausprobieren könntet. Es ist auf einer Ubuntu Feisty Kiste geschrieben, wie es sich auf anderen Systemen verhält konnte ich leider (noch) nicht testen.
Hier nun der Code:
Ich hab ein Batch-Skript für Linux geschrieben.
Es soll das ewig einzelne Bildbearbeiten und anschließendes Hochladen für Foren erleichtern. Es bearbeitet einen Ordner von Bildern und lädt diesen dann auf einen Server hoch.
Das Skript basiert auf imagemagick. Es ist multifunktional ausgelegt. Die einzelnen Funktionen können getrennt an und abgeschaltet werden.
Liste der Funktionen
- Verkleinert Bilder
- erstellt Thumbnails
- Kann Bilder automatisch drehen (anhand von EXIF Daten aus dem Bild)
- Fügt einen Rahmen ein
- Fügt ein Wasserzeichen ein
- Fügt einen beliebigen Text ein
- lädt den erstellten Ordner via ssh (ftp und xs.to kommt noch) hoch.
Voraussetzungen:
Imagemagick und ssh bzw. openssh
Installation:
Angehängten Code in eine Textdatei einfügen.
Ausführbar machen mittels chmod 755 %datei%
Ausführung:
./%datei% pfad/zum/Ordner
To-Do:
FTP und xs.to als Upload-Möglichkeit hinzufügen.
Code verbessern.
Ich würde mich freuen, wenn ihr das Skript mal ausprobieren könntet. Es ist auf einer Ubuntu Feisty Kiste geschrieben, wie es sich auf anderen Systemen verhält konnte ich leider (noch) nicht testen.
Hier nun der Code:
Code:
#!/bin/bash
###Writen by C.Dueformantel
###Christian at dueformantel.de
###Grundeinstellungen###
text_allow="1" #Erstellung eines Copyright Textes. "0" = nein, "1" = ja. Default: "1"
pic_allow="1" #Einfuegen . "0" = nein, "1" = ja. Default: "1"
thumbs_allow="1" #Erstellung von Thumbnails. "0" = nein, "1" = ja. Default: "1"
small_allow="1" #Erstellung von verkleinerten Bildern. "0" = nein, "1" = ja. Default: "1"
support_format=( JPG jpg png gif ) #Unterstuetzte Dateiformate Default: ( JPG jpg png gif )
auto_orient="0" #Orientiert die Bilder an Hand der EXIF-Infomationen im Bild. "0" = nein, "1" = ja. Default: "0"
upload_type="scp" #Auswahl der Upload-Formen "scp": Upload via ssh, "ftp": Upload via ftp, "non": Kein Upload. Default: "scp"
###Ordnereinstellungen###
ordner_name=$(date "+%d-%m-%Y") #Erstellung des Ordnernames mittels des akutellen Datums. Default: $(date '+%d-%m-%Y')
thumbs="thumbs" #Ordnername fuer die Thumbnail Bilder. Default: "thumbs"
small="small" #Ordnername fuer die verkleinerten Bilder. Default: "small"
###Bildeinstellungen###
thumbs_size="400x400" #Groesse der Thumbnail Bilder. Default: "200x200"
thumbs_quality="70" #Qualitaet der Thumbnail Bilder. Default: "70"
small_size="1024x768" #Groesse der verkleinerten Bilder. Default: "1024x768"
small_quality="80" #Qualitaet der verkleinerten Bilder. Default: "80"
frame_allow="1" #Erstellung eines Rahmens um das Bild. "0" = nein, "1" = ja. Default: "1"
frame_color="#000000" #Farbe des Rahmens. Default:"#000000"
frame_size="5x5" #Groesse des Rahmens. Default:"5x5"
vorlage="" #Pfad des Schriftzuges. Default: "/home/user/schriftzug.png"
pic_position="Southeast" #Position des Schriftzuges. Zusammengesetzt aus den Himmelsrichtungen. Default: "Southeast"
text_positon="20,20" #Postion des Copyright Textes, in Pixel. Beginnend im oberen linken Eck. Default: "20,20"
cr_text="Copyright by user" #Copyright Text. Default:"Copyright by User"
###Uploadeinstellungen###
upload_user="" #User fuer den Upload
upload_server="" #Ip oder Domain des Servers
upload_path="" #Pfad zum Bilder Ordner
#####Funktionen#####
#function: orientation
#Prueft ob EXIF Infomationen vorhanden sind und dreht das Bild anschließend in das richtige Format
function orientation
{
if [ $auto_orient == "1" ] ;
then
{
orient=$(identify -format '%[exif:orientation]' $file)
case "$orient" in
1) echo $file hat richtige Ausrichtung;;
4) convert $file -rotate 180 $file;;
6) convert $file -rotate 270 $file;;
8) convert $file -rotate 90 $file;;
*) echo Ausrichtung für $file nicht ermittelbar!;;
esac
}
fi
}
#function:upload
#Laedt die aktuell umgewandelten Daten auf den Server hoch.
function upload
{
case "$upload_type" in
ftp) echo noch nicht eingebaut;;
scp) scp -r $ordner_name $upload_user@$upload_server:$upload_path;;
*) echo kein Upload gewählt;;
esac
}
#funktion: umwandeln
#Umwandlungsfunktion, Fügt Copyright hinzu, zeichnet Rahmen, erstellt Thumbnails und verkleinert Bilder
function umwandeln
{
if [ $text_allow == "1" ] ;
then
convert $file -font Helvetica -pointsize 25 -fill grey -draw "text $text_positon '$cr_text'" $file
fi
if [ $pic_allow == "1" ] ;
then
composite -gravity Southeast -compose src-over $vorlage $file $file
fi
if [ $frame_allow == "1" ] ;
then
convert $file -mattecolor "$frame_color" -frame $frame_size $file
fi
if [ $thumbs_allow == "1" ] ;
then
convert $file -resize $thumbs_size -quality $thumbs_quality $thumbs/t_$file
fi
if [ $small_allow == "1" ] ;
then
convert $file -resize $small_size -quality $small_quality $small/s_$file
fi
echo $file umgewandelt!
}
#####Funktionen End#####
#Wechselt in das angegebene Verzeichnis
cd $1
#Erstellung des Umwandlungsordners
mkdir $ordner_name
#Kopieren der unterstützten Bilddateien
cp *.JPG *.jpg *.png *.gif $ordner_name
#Erstellung des Thumbs-Ordners
if [ $thumbs_allow == "1" ] ;
then
mkdir $ordner_name/$thumbs
fi
#Erstellung des Small-Ordners
if [ $small_allow == "1" ] ;
then
mkdir $ordner_name/$small
fi
#Wechselt in das erstellte Verzeichnis
cd $ordner_name
format_count=${#support_format[@]}
for ((a=0; a < $format_count; a++))
do
{
format=${support_format[$a]}
for file in *.$format
do
{
orientation
umwandeln
}
done
}
done
cd ..
upload