Diese Repo sammelt das Tooling um..
- Lokale Fotosammlung per Mac Finder taggen.
- Diese rekursiv heraussuchen, und umkopieren.
- Dort den Originalpfad und Dateiname per ImageMagick ins Bild bringen.
- Final dann Fotos online drucken lassen.
- Anzahl ermitteln mit
find ~/Pictures/Export/fotosammlung -type f|wc -l
) - Gesamtgröße
du -hs ~/Pictures/Export/fotosammlung/*
- Anzahl ermitteln mit
copy_photos.php
: Erstellt Druck-fertige Bilder aus einer Quell-Fotosammlung im Ziel-Order
save_tags.php
: sucht alle getaggten Bilder zusammen und speichert diese in einer JSON
restore_tags.php
: setzt die Tags von Bildern aus einer gespeicherten JSON-Datei
detect_wide_pics.php
: sucht überbreite Bilder und schreibt sie in eine JSON
exif.php
: EXIF Daten aus Foto dumpen
fix_timestamp.php
**: stellt Änderungszeitpunkt via touch
auf EXIF-Metadaten DateTimeOriginal
Bilder im Finder taggen -> per Automator Program + Default für JPG-Dateien -> Cmd+O taggt Datei somit.
Bilder zusammensuchen & watermarken, Aufruf:
php copy_photos.php -s ~/Pictures/fotos-archiv-test -d ~/Pictures/Export/fotosammlung
Bilder drucken -> Rossmann mindestmaße bei 300dpi und 10x15 -> 15/2,54*300 = 1770
per Finder
manuell per Finder.. ist direkt als Attrib im Dateisystem verankert
blau = "Fotosammlung"
per Lightroom
trotz aktivierter XMP-Speicherung wird beim Farb-Taggen keine XMP geschrieben = kann nicht gelesen werden
https://github.com/jdberry/tag
brew install tag
tag -f Fotosammlung
-> Dateiliste zeilenweise!
- Seitenverhältnis beachten! immer unten schreiben
- weisse Schrift mit schwarzen Schemenrand
- verschiedene (lesbare!) Schriftarten
Generating text with glow and stroke - PHP full example
ImageMagick: Annotate - Text Drawing Operator (annotate = kommentiert)
Mac-style font smoothing zweimal Schrift mit leichten Versatz nach unten
-annotate
ist einfacher zu bedienen als -draw
blau auf hellblau
convert -size 320x100 xc:lightblue -font Candice -pointsize 72 -fill blue -annotate +25+70 'Anthony' annotate.gif
schwarz mit gelben Rand auf transparent
convert -size 1024x100 xc:none -font ../fonts/YanoneKaffeesatz-Regular.ttf -pointsize 72 -fill black -stroke yellow -annotate +25+70 '2001/pfad/zum/bild.jpg' annotate.png
per label - geht schon, ist aber nicht transparent
convert -font ../fonts/YanoneKaffeesatz-Regular.ttf -pointsize 36 label:'2001/pfad/zum/bild.jpg' +append label.png
Image Positioning using Gravity
Bilder stehen nebeneinander
composite -gravity center schatten.png schrift.png beides.png
Schattenbild füllt Konturen von Schrift aus - interessant, ist aber noch nicht das Zielbild
composite -compose atop schatten.png schrift.png beides.png
Zusammensetzen in Richtig!
convert bild.jpg \
-gravity SouthWest -draw "image Over 15,10 0,0 'schatten.png'" \
-gravity SouthWest -draw "image Over 10,20 0,0 'schrift.png'" \
bild_fertig.jpg
http://www.imagemagick.org/Usage/fonts/ -> "Denser Soft Outline"
convert -size 1024x130 xc:none -font ../fonts/YanoneKaffeesatz-Regular.ttf -pointsize 72 \
-stroke black -strokewidth 8 -annotate +25+75 '2001/pfad/zum/bild.jpg' -blur 0x8 \
-fill white -stroke none -annotate +25+75 '2001/pfad/zum/bild.jpg' \
beides.png
http://www.imagemagick.org/Usage/fonts/#mask
convert -size 1024x100 xc:transparent -font ../fonts/YanoneKaffeesatz-Regular.ttf -pointsize 50 \
-fill black -annotate +24+64 '2001/pfad/zum/bild.jpg' \
-fill white -annotate +26+66 '2001/pfad/zum/bild.jpg' \
-fill transparent -annotate +25+65 '2001/pfad/zum/bild.jpg' \
trans_stamp.png
convert -size 1024x100 xc:black -font ../fonts/YanoneKaffeesatz-Regular.ttf -pointsize 50 \
-fill white -annotate +24+64 '2001/pfad/zum/bild.jpg' \
-fill white -annotate +26+66 '2001/pfad/zum/bild.jpg' \
-fill black -annotate +25+65 '2001/pfad/zum/bild.jpg' \
mask_mask.jpg
composite trans_stamp.png bild.jpg mask_mask.jpg \
bild_fertig.jpg
statt 3 Bilder besser mit Zwischenbild:
composite -compose CopyOpacity mask_mask.jpg trans_stamp.png trans_stamp3.png
composite trans_stamp3.png bild.jpg bild_fertig.jpg
ist noch oben links, muss runter..
convert bild.jpg \
-gravity SouthWest -draw "image Over -10,-10 0,0 'trans_stamp3.png'" \
bild_fertig.jpg
convert -size 1024x120 xc:none -font ../fonts/YanoneKaffeesatz-Regular.ttf -pointsize 50 \
-stroke black -strokewidth 8 -annotate +25+80 '2001/pfad/zum/bild.jpg' -blur 0x8 \
-fill lightgray -stroke none -annotate +25+80 '2001/pfad/zum/bild.jpg' \
beides.png
Normales Bild
convert bild.jpg \
-gravity SouthWest -draw "image Over -10,-10 0,0 'beides.png'" \
bild_fertig.jpg
Hochkant Bild
convert bild.jpg -rotate -90 \
-gravity SouthWest -draw "image Over 0,-10 0,0 'beides.png'" \
-rotate 90 bild_fertig.jpg
Problem: beides.png ist so breit/hoch wie das Bild, ist also nicht unten links platzierbar.
transparentes Bild erzeugen
convert -size 1024x100 xc:transparent -font ../fonts/YanoneKaffeesatz-Regular.ttf -pointsize 50 \
-fill black -annotate +24+64 '2001/pfad/zum/bild.jpg' \
-fill white -annotate +26+66 '2001/pfad/zum/bild.jpg' \
-fill transparent -annotate +25+65 '2001/pfad/zum/bild.jpg' \
trans_stamp.png
gleiches nochmal mit schwarzen Hintergrund
convert -size 1024x100 xc:black -font ../fonts/YanoneKaffeesatz-Regular.ttf -pointsize 50 \
-fill white -annotate +24+64 '2001/pfad/zum/bild.jpg' \
-fill white -annotate +26+66 '2001/pfad/zum/bild.jpg' \
-fill black -annotate +25+65 '2001/pfad/zum/bild.jpg' \
mask_mask.jpg
Deckkraft ermitteln und als PNG speichern - die finale Maske
composite -compose Copy Opacity mask_mask.jpg trans_stamp.png text_mask.png
rm trans_stamp.png mask_mask.jpg
Normales Bild
convert bild.jpg \
-gravity SouthWest -draw "image Over -10,-10 0,0 'text_mask.png'" \
bild_fertig.jpg
Hochkant Bild
convert bild.jpg -rotate -90 \
-gravity SouthWest -draw "image Over 0,-10 0,0 'text_mask.png'" \
-rotate 90 bild_fertig.jpg
rm text_mask.png
Feststellung: es ist unglaublich kompliziert, per Tastatur einfach mal eine Datei zu vertaggen :(
Per Automator ein Programm erstellen, das Finder Eingabe verwendet und ein Script ausführt. Einfach mal ein sh-Script als Programm festlegen geht leider nicht. How to execute a shell script with selected files/folders in finder? Wenn man temporär für *.jpg dieses Programm zuordnet, kann man per Doppelklick den Tag festlegen. Fast gut genug. Fehlt noch per ?+Enter starten für volle Tastatursteuerung. Ah, Cmd+O oder Cmd+Down
Meldet Fehler beim ausführen im Finder. Testen via Commandline: Pass arguments to Automator or AppleScript workflows from the command line
Testen mit Task "Angegebene Finder-Objekte abfragen". Dann testen in Automator meldet tatsächlich Fehler. Pfad zu tag
musste mit angegeben werden. (/usr/local/bin/tag
).
Per Automator einen Service erstellen, der den Tag setzt. Diesen dann per Shortcut ansprechen. Finder Label or Tag Keyboard Shortcut Damit erscheint das Zuordnen im Kontextmenü von Dateien und ist per Shortcut aufrufbar. Für Massen-Vertaggung aber nicht gut geeignet.
http://www.imagemagick.org/Usage/text/#unicode http://www.wizards-toolkit.org/discourse-server/viewtopic.php?t=12711
Test mit "Käsefodue" wird zu "K?ase"
php copy_photos.php -s ~/Pictures/fotos-thumbs/2013 -d ~/Pictures/Export/fotosammlung/2013 -r -t Rot
per exif_read_data
das `DateTimeOriginal auslesen
Titelprefix per -p
Formatvorschrift:
Prefix: Ordnernamen ohne Datum / Dateiname (Datum aus EXIF)
Wenn DateTimeOriginal
falsch ist bzgl. Jahresangabe in -p
dann wird ein Timestamp im Pfad gesucht und verwendet.
- alle Timestamps entfernen
- "/# " zu ""
- "/lightroom/" entfernen
Was wenn Text zu lang? z.B. "Urlaub/2011-05-21 Toskana/02_23-05 Montag - Baden am Meer/01 - unser Stranddomizil am Naturstrand.JPG", "Urlaub_2011-05-21_Toskana_03_24-05_Dienstag_-_Lari_05 - wir gemeinsam.jpg"
- Bilder mit 1024px Breite? dann Text kleiner
- 2-3 Varianten Textgröße
- wenn viel Text, dann auch kleiner
Speichert alle Tags an Dateien in einen Verzeichnis in einer JSON.
php save_tags.php -d ~/Pictures/fotos-thumbs -j ~/Pictures/fotos-thumbs/tagged_fotosammlung.json -t Fotosammlung
Alle Dateien einer JSON werden wiederhergestellt.
php restore_tags.php -j /Volumes/Daten/ronny/Pictures/fotos-thumbs/tagged_fotosammlung.json -t Fotosammlung -d /Volumes/Daten/ronny/Pictures/fotos-archiv
php restore_tags.php -j ~/Pictures/fotos-thumbs/2005/Suedafrika_Foto-DVD/tags.json -d ~/Pictures/fotos-archiv/2005/Suedafrika_Foto-DVD -t Fotosammlung
Geht auch Jahr-weise - siehe restore_tags.sh
.
Da der Fotodrucker Bilder mit Überbreite trotzdem druckt, muss ich diese mit der Schere beschneiden, damit es auf 15cm Breite in die Fotobox passt. Das nächste Mal wäre eine Erkennung gut. Dazu folgendes Script:
php detect_wide_pics.php -d ~/Pictures/fotos-thumbs -f 1.51 -t Fotosammlung -j detect_wide_pics.json
find ~/Pictures/Export/fotosammlung -type f -mtime +1