Hallo!
Matthias Edler-Golla
matthias.edler-golla@hm.edu
http://matthias-edler-golla.de
Matthias Edler-Golla
matthias.edler-golla@hm.edu
http://matthias-edler-golla.de
Oft ist es sehr mühsam, bei vielen Dateien von Hand die Datei-Endungen oder Teile des Namens zu verändern. Via Terminal geht das relativ einfach und es ist egal, um wieviele Dateien es sich handelt!
„Rename“ ist nicht automatisch auf Euren Rechnern, Ihr müsst dies erst noch installieren:
brew install rename
sudo apt install rename
Ladet die Zip-Datei "Temperaturen.zip" herunter und entpackt diese auf Eurem Desktop
rename verwendet Regular expression um Suchkriterien festzulegen. Diese zeigen sich in den unten aufgeführten Beispielen durch die eigenartigen Buchstabenkombinationen wie z.B. "s/_/-/g".
cd ~/Desktop/Temperaturen/
rename -v 's/\.txt$/\.csv/' *.txt
Das "-v" bedeutet "verbose", Ihr bekommt Rückmeldung, was gerade passiert…
rename -n 's/2019/19/g' *
Das "-n" bedeutet, dass im Terminal nur gezeigt wird, was sich ändern würde – zum tatsächlichen Ändern die Option "-n" entfernen!
rename 's/_/-/g' *
rename 's/temperatur/temp/g' *
Use ImageMagick® to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
Image Magick ist das Schweizer Messer unter den Bildverarbeitungsprogrammen, läuft auch auf dem Raspberry Pi und kann viele Bilder gleichzeitig bearbeiten (Stapelverarbeitung)
Ladet die Zip-Datei "Demo-Fotos.zip" herunter und entpackt diese auf Eurem Desktop
Viele Bilder automatisch auf eine gewünschte Größe verkleinern – um z.B. für eine Website schnell ladende Vorschaubilder zu haben…
cd ~/Desktop/Demo-Fotos/
mkdir Thumbs && mkdir Gross
mv *.jpg Gross
cd Gross
find . -type f | wc -l
hier sind 30 Fotos enthalten!
mogrify -strip -interlace Plane -sharpen 1 -resize 320 -quality 60 -path ../Thumbs *.jpg
Achtung, der Prozess kann eine Weile dauern, nicht abbrechen! Danach hat man im Ordner "Thumbs" die gleichen Bilder wie im Ordner "Gross", aber alle auf die Größe 320x240 heruntergerechnet…
cd ../Thumbs
find . -type f | wc -l
Die Alternative wäre gewesen, alle Fotos von Hand zu verkleinern, oder aber z.B. in Photoshop eine Automatisierung zu erstellen…
Image Magick kann einem viele (langweilige) Arbeit abnehmen – zum Beispiele alle Bilder in einem Ordner auf einer Seite als Thumbnails zusammenfassen!
Ladet die Zip-Datei "Shots.zip" herunter und entpackt diese auf Eurem Desktop
Die von Image Magick erzeugten Bilder werden außerhalb des Ordner Shots abgespeichert, damit sie bei den jeweiligen Aufrufen nicht mit verwendet werden – deswegen z.B. „../collage_horizontal.jpg“. Sie liegen somit direkt auf Eurem Desktop!
cd ~/Desktop/Shots
convert +append shot_1.jpg shot_2.jpg ../collage_horizontal.jpg
convert -append shot_1.jpg shot_2.jpg shot_3.jpg ../collage_vertikal.jpg
durch -append werden die Bilder untereinander angeordnet!
convert -append *.jpg ../collage_vertikal_alle.jpg
montage *.jpg -geometry +5+5 ../montage_h.jpg
"+5+5" macht 5 * 5-breiten, weißen Rahmen um die Bilder
montage -mode concatenate -tile 1x *.jpg ../montage_v.jpg
montage -mode concatenate -tile 3x *.jpg ../montage_v_2.jpg
montage -label %f -mode concatenate -geometry +5+2 -resize 25% -tile 3x *.jpg ../montage_v_3.jpg
Probiert es doch auch mal mit eigenen Bilder aus!
Aus beliebig vielen Bildern eines Ordners ein Animated Gif erstellen – die Bilder müssen gleich groß sein!
Bitte verwendet zum Ausprobieren die Bilder aus dem Ordner Shots, die auch beim vorherigen Slide verwendet wurden!
cd ~/Desktop/Shots
mkdir ../Thumbs
mogrify -resize 93.75% -quality 80 -path ../Thumbs *.jpg
cd ../Thumbs
convert -delay 50 -loop 0 *.jpg ../testimage_960.gif
" -loop 5" würde die Animation fünfmal ablaufen lassen und dann aufhören
cd ../
rm -r ../Thumbs
Mit Image Magick kann man Bilder mit Wasserzeichen versehen – z.B. als einfacher Copyright-Schutz
Ladet die Zip-Datei "Wasserzeichen.zip" herunter und entpackt diese auf Eurem Desktop
am besten ein Bild im PNG-Format, bei dem der Hintergrund transparent ist;
cd ~/Desktop/Wasserzeichen/Shots/
Das Wasserzeichen muss an einer genau definierten Stelle abgelegt sein – für die folgenden Anweisungen genau hier:
~/Desktop/Wasserzeichen/ampersand.png
composite -gravity SouthEast "../ampersand.png" "shot_1.jpg" "shot_1_watermark.jpg"
composite -gravity Center "../ampersand.png" "shot_2.jpg" "shot_2_watermark.jpg"
composite -gravity NorthWest "../ampersand.png" "shot_3.jpg" "shot_3_watermark.jpg"
composite -compose Multiply -gravity NorthEast -geometry +10+10 "../ampersand.png" "shot_4.jpg" "shot_4_watermark.jpg"
"-geometry +10+10" 10 Pixel vom Rand
Man kann auch ganze Stapel von Bildern automatisch mit Wasserzeichen versehen – dazu ist ein Bash Script notwendig, Siehe nächste Slides!
Das Format soll als neuer offener Standard für verlustbehaftet komprimierte Echtfarb-Grafiken im Web dienen und wird so als direkte Konkurrenz zum älteren JPEG platziert, gegenüber dem es bei vergleichbarer Qualität deutlich kleinere Dateien ermöglichen soll.
Ladet die Zip-Datei "WebP.zip" herunter und entpackt diese auf Eurem Desktop
brew install webp
sudo apt-get install webp
cd ~/Desktop/WebP
cwebp -q 80 shot-00.jpg -o shot-00.webp
Eine Datei-Größen-Ersparniss von ca. 33%!
cwebp -q 80 -resize 0 400px shot-01.jpg -o shot-01.webp
Zum schnellen Ansehen könnt Ihr die so erzeugten Bilder direkt auf ein Browser-Fenster (Firefox, Chrome) ziehen…
Wenn Ihr aktuell webp-Bilder auf Euren Websites nutzen wollt, gibt es dazu einen guten Artikel…
<picture>
<source srcset="p/shot-00.webp" type="image/webp">
<source srcset="p/shot-00.jpg" type="image/jpeg">
<img src="p/shot-00.jpg" alt="Dachauer Straße">
</picture>
Bash scripts are used by Systems Administrators, Programmers, Network Engineers, Scientists and just about anyone else who uses a Linux/ Unix system regularly. No matter what you do or what your general level of computer proficiency is, you can generally find a way to use Bash scripting to make your life easier.
Mit Bash-Scripten könnt Ihr ganz viele langweilige Sachen automatisieren! Auf den nächsten Slides werde ich Euch ein paar Sachen zeigen, die ich häufig verwende:
Bitte legt hierfür auf Eurem Desktop den Ordner "bash" an und wechselt dort hinein:
cd ~/Desktop && mkdir bash && cd bash
nano helloWelt.sh
dort den hier unten aufgeführten Code einfügen und sichern ("ctrl + x" und dann "y")
#!/bin/bash
echo Hallo Welt!
exit 0
sh helloWelt.sh
Unter Ubuntu müssen die Bash-Scripte an fixen Stelle liegen und zusätzlich „ausführbar“ gemacht werden!
ACHTUNG: Das trifft auch alle Bash-Skripte zu, die auf den nächsten Slides vorgestellt werden: Sie müssen sich alle im Ordner bin befinden und ausführbar ("sudo chmod 755 …") gemacht werden, damit sie funktionieren!
cd ~ && mkdir bin && cd bin
nano helloWelt.sh
dort den hier unten aufgeführten Code einfügen und sichern ("ctrl + x" und dann "y")
#!/bin/bash
echo Hallo Welt!
exit 0
jetzt müsst Ihr – anders als am Mac – die Datei noch "ausführbar" machen:
sudo chmod 755 helloWelt.sh
das Passwort für Euren Ubuntu-User eingeben und ENTER-Taste drücken. Jetzt kann „helloWelt.sh“ als ausführbares Script genutzt werden
Da es vermutlich das 1. Bash-Script ist, das Ihr bei "bin" anlegt, müsst Ihr jetzt Euren Rechner neu starten, damit die Bash-Scripte funktionieren. Das ist bei weiteren Bash-Scripten nicht mehr nötig!
helloWelt.sh
Wenn ich mit einer neuen Website anfange, schaut meine Ordner- und Dateistruktur meistens wie auf dem oben gezeigten Screenshot aus. Von Hand ist es mühsam, immer wieder die gleichen Ordner und Dateien anzulegen – deswegen habe ich mir dazu ein Bash-Script geschrieben:
cd ~/Desktop/bash
cd ~/bin
touch webdesign.sh
Die so erzeugte, leere Textdatei könnt Ihr jetzt mit einem Editor wie Brackets oder Atom öffnen und mit dem Inhalt des unten gezeigten Bash-Scripts befüllen!
hier – mit vielen Kommentaren versehen – das Script "webdesign.sh" – probiert es doch mal aus!
#!/bin/bash
# das Script erzeugt diverse Ordner und Dateien,
# die typischerweise beim Start eines neuen Web-Projektes benötigt werden
# ============== Pfad-Angabe ==============
# Hier den kompletten Pfad andgeben
echo Bitte Pfad - ohne Anführungsstriche - angeben, wo der Ordner und die Dateien erzeugt werden sollen. Ohne Angaben wird der Ordner auf dem Desktop angelegt!
read -p 'Pfad: ' Pfad
# Ohne Angaben, dann auf Desktop
if [ ! $Pfad ]
then
Pfad=~/Desktop/
fi
cd $Pfad
# ============== Ordner-Angabe ==============
# der Name des gewünschten Ordners am Ende von $Pfad
echo Bitte Ordnername – ohne Anführungsstriche – angeben:
read -p 'Ordner: ' Ordner
# Ohne Angaben wird der Ordner "HTML-Test" genannt
if [ ! $Ordner ]
then
Ordner=HTML-Test
fi
mkdir $Ordner && cd $Ordner
# ============== erzeugen der Ordner und Dateien ==============
touch index.html
# alle benötigten Ordner anlegen
mkdir f && mkdir c && mkdir js && mkdir p
# style.css im Ordner c anlegen
cd c && touch style.css && cd ../
# script.js im Ordner js anlegen
cd js && touch script.js && cd ../
# Ausgabe im Terminal, dass alles angelegt ist
echo Webdesign-Files bei $Pfad$Ordner angelegt!
exit 0
sudo chmod 755 webdesign.sh
cd ~/Desktop/bash && sh webdesign.sh
webdesign.sh
Das hier vorgestellte Script verwendet die vorhin vorgestellten "mogrify"-Befehle von imageMagick, erlaubt aber ganz einfach, die gewünschte Breite der Bilder direkt im Terminal anzugeben.
cd ~/Desktop/bash
cd ~/bin
touch thumbnails.sh
Die so erzeugte, leere Textdatei könnt Ihr jetzt mit einem Editor wie Brackets oder Atom öffnen und mit dem Inhalt des unten gezeigten Bash-Scripts befüllen!
Das Script rechnet automatisch die Bilder auf die gewünschte Größe herunter und meldet sich, wenn die Aufgabe erledigt ist.
hier – mit vielen Kommentaren versehen – das Script "thumbnails.sh" – probiert es doch mal aus!
#!/bin/bash
# erzeugt den Ordner "Breite_XX" im Ordner, in dem man sich befindet,
# erstellt mit ImageMagick verkleinerte Bilder und legt diese im Ordner "Breite_XX" ab
# die Namen der Bilder bleiben erhalten
# ============== Pfad-Angabe ==============
# Hier den kompletten Pfad angeben, wo sich die Bilder befinden
echo Pfad - ohne Anführungsstriche - angeben, wo sich die runterzurechnenden Bilder befinden, z.B. /Users/thias/Desktop/Photos
read -p 'Pfad: ' Pfad
# dorthin wechweln
cd $Pfad
# Zählt die Dateien im Ordner und fügt diese in die Variable "Anzahl" ein
# -maxdepth 1 sorgt dafür, dass nicht in tiefere Ordner-Strukturen gezählt wird
# -iname ".*" zählt die unsichtbaren Dateien nicht mit
Anzahl=$(find . -maxdepth 1 -type f \( ! -iname ".*" \) | wc -l)
# ============== Breite-Angabe ==============
# gewünschte Breite der Bilder
echo gewünschte Breite der Bilder – Grundeinstellung 400:
read -p 'Breite: ' Breite
# gibt man keine Breite an, wird 400 genommen
if [ ! $Breite ]
then
Breite=400
fi
ZielOrdner=Breite_$Breite
mkdir $ZielOrdner
echo $ZielOrdner bei $Pfad angelegt, dort werden die heruntergerechneten Bilder gespeichert
# ============= Qualitäts-Angaben =============
# gewünschte Qualität der Bilder
echo gewünschte Qualität der Bilder – Grundeinstellung 70:
read -p 'Qualität: ' Qualitaet
# gibt man keine Qualitaet an, wird 70 genommen
if [ ! $Qualitaet ]
then
Qualitaet=70
fi
echo $Anzahl Bilder werden auf $Breite px mit der Qualität $Qualitaet % heruntergerechnet, das kann etwas dauern!
# ============= das eigentliche Skalieren aller Bilder =============
# -strip: EXIF-Informationen entfernen
# -interlace Plane: Bilder werden progressive geladen
mogrify -strip -interlace Plane -sharpen 1 -resize $Breite -quality $Qualitaet -path $ZielOrdner *.jpg
# Meldung im Terminal, dass das Runterrechnen erledigt ist
echo $Anzahl Bilder bei $Pfad/$ZielOrdner angelegt!
exit 0
sudo chmod 755 thumbnails.sh
cd ~/Desktop/bash && sh thumbnails.sh
thumbnails.sh
Mit folgendem, auf dem Raspi schon installierten Bash-Script könnt Ihr beliebig viele Bilder mit dem Wasserzeichen "ampersand.png" versehen.
Ladet die Zip-Datei "Wasserzeichen-2.zip" herunter und entpackt diese auf Eurem Desktop
cd ~/Desktop/Wasserzeichen-2
mv watermark.sh ../bash && cd ../bash
mv watermark.sh ~/bin && cd ~/bin
sudo chmod 755 watermark.sh
sh watermark.sh
watermark.sh
/Users/thias/Desktop/Wasserzeichen-2/Shots
Achtung: Das ist mein Pfad, der ist bei Euch anders! Rest erledigt das Script
ls ~/Desktop/Wasserzeichen-2/Shots/mit_Wasserzeichen
#!/bin/sh
# https://petermolnar.net/simple-batch-resize-watermark-with-imagemagick/
# Aufforderung an den User, anzugeben, wo sich die zu markierenden Bilder befinden
echo Bitte gewünschten Ordner-Name -ohne Anführungsstriche- angeben, z.B. /Users/thias/Desktop/Wasserzeichen/Shots
read -p 'Ordner: ' ordner
# in den Ordner wechseln
cd $ordner
# wo sollen die überarbeiteten Bilder gespeichert werden
zielOrdner="mit_Wasserzeichen"
# das vorbereitete Wasserzeichen muss sich an der hier angegebenen Stelle befinden!
wasserzeichen="/Users/thias/Desktop/Wasserzeichen/ampersand.png"
# Ordner erzeugen
# Achtung, wenn der Ordner schon existiert, werden die Bilder darin überschrieben
mkdir $zielOrdner
# alle Dateien mit Datei-Endungen verwenden, also ".jpg, .JPG, .jpeg, .png, .PNG"
for fname in *.*; do
composite -gravity SouthEast -geometry +10+10 $wasserzeichen "$fname" "./$zielOrdner/$fname"
# Ausgabe bei jedem Bild einzeln
echo "Wasserzeichen bei $fname eingefuegt!"
done
# Ausgabe, wenn alles fertig ist
echo "Fertig: Alle mit Wasserzeichen markierten Bilder bei $ordner/$zielOrdner" eingefügt
exit 0
Ladet die Zip-Datei "Kamera.zip" herunter und entpackt diese auf Eurem Desktop
cd ~/Desktop/Kamera
mkdir gross
mv *.jpg gross
mkdir klein
cd gross
## auf 400px runterrechnen und bei "klein" speichern
mogrify -strip -interlace Plane -sharpen 1 -resize 400 -quality 80 -path ../klein *.jpg
cd ../klein
montage -label %f -mode concatenate -geometry +5+2 -tile 5x *.jpg ../kontaktabzug.jpg
#!/bin/sh
# https://petermolnar.net/simple-batch-resize-watermark-with-imagemagick/
# Aufforderung an den User, anzugeben, wo sich die zu markierenden Bilder befinden
echo Bitte gewünschten Ordner-Name -ohne Anführungsstriche- angeben, z.B. /Users/thias/Desktop/meineShots
read -p 'Ordner: ' ordner
# in den Ordner wechseln
cd $ordner
# wo sollen die überarbeiteten Bilder gespeichert werden
zielOrdner="mit_Wasserzeichen"
# das vorbereitete Wasserzeichen muss sich an der hier angegebenen Stelle befinden!
wasserzeichen="/Users/thias/Desktop/Kamera/euro-zeichen.png"
# Ordner erzeugen
# Achtung, wenn der Ordner schon existiert, werden die Bilder darin überschrieben
mkdir $zielOrdner
# alle Dateien mit Datei-Endungen verwenden, also ".jpg, .JPG, .jpeg, .png, .PNG"
for fname in *.*; do
composite -gravity SouthWest -geometry +10+10 $wasserzeichen "$fname" "./$zielOrdner/$fname"
# Ausgabe bei jedem Bild einzeln
echo "Wasserzeichen bei $fname eingefuegt!"
done
# Ausgabe, wenn alles fertig ist
echo "Fertig: Alle mit Wasserzeichen markierten Bilder bei $ordner/$zielOrdner" eingefügt
exit 0
cd ~/Desktop/bash
sh watermark.sh
watermark.sh
Ordner: /Users/thias/Desktop/Kamera/gross
das ist bei Euch natürlich ein anderer Pfad!
Wir hören/sehen uns nächsten Donnerstag (7.5.2020)!
Bleibt gesund!