Passbilder am Drogerie/Discounter Fotodrucker

Passbilder am Drogerie/Discounter Fotodrucker

Immer wieder ärgere ich mich wenn ich neue Passbilder brauche. Zwar ist eine Foto selbst schnell gemacht, aber die Vorbereitung für das Drucken ist immer wieder eine nervige Angelegenheit. Wie groß muss das Foto gleich wieder sein? Wie bekomme ich es hin das am Fotodrucker genau diese Größe am Ende rauskommt? Macht der Fotodrucker mein Foto etwas größer und in welchem Maße?

Bislang bemühte ich dazu Gimp und einen Taschenrechner. Nachdem ich nun das Tool montage kenne, habe ich ein kleines wrapper script geschrieben um diese Schritte automatisiert zu machen.

Manuelle Schritte:

  1. Foto machen und auswählen
  2. Foto zuschneiden nach der Maske für Passfotos (kinder) und dem Verhältnis 35:45
  3. Evtl. Lichtverhältnisse (Helligkeit/Kontrast/…) optimieren
  4. Bestimmen der Druckgröße. Bei dm ist z.B. das Standardformat am Fotodrucker 10x15cm

Schritte die das Programm übernimmt:

  1. Auslesen der Auflösung und Maße aus dem Foto / der Quelldatei
  2. Bestimmen der Auflösung der Zieldatei so dass das Foto mit der optimalen Qualität eingefügt wird.
  3. Berechnung der horizontalen und vertikalen Rahmen so genau 2 auf 2 Passfotos auf das Zielfoto passen.
  4. Einfügen der Fotos mittels dem Tool montage

Hier das Script für MacOS / ZSH:

#!/usr/bin/env zsh

# Groesse in cm des Zielformats
PHOTO_W=10
PHOTO_H=15

WORK_DIR=$(pwd)
SCRIPT_DIR=$(cd $(dirname $0) && pwd)

if [[ -z "$1" ]]; then
  echo "No input file given. Usage: $0 <IMG>"
  exit 1
fi

IMAGE_IN_PATH=$(cd $SCRIPT_DIR && cd $(dirname $1) && pwd)/$(basename $1)
IMAGE_OUT_PATH=$(cd $SCRIPT_DIR && cd $(dirname $1) && pwd)/out-${PHOTO_W}x${PHOTO_H}.jpg

if [[ ! -f "${IMAGE_IN_PATH}" ]]; then
  echo "File not found: ${IMAGE_IN_PATH}"
  exit 1
fi

# Auslesen des Formats der Quelldatei
eval $(identify -format 'IMG_WIDTH=%w\nIMG_HIGHT=%h\n' ${IMAGE_IN_PATH})
echo "Using file ${IMAGE_IN_PATH} with size ${IMG_WIDTH}x${IMG_HIGHT}"

# Berechnung der horizontalen und vertikalen Rahmen
BORDER_VERT="$(echo $(( (( ${IMG_WIDTH} / 3.5 * ${PHOTO_W} ) - ( 2 * ${IMG_WIDTH} )) / 4 )) | awk '{ print int($1) }')"
BORDER_HORT="$(echo $(( (( ${IMG_HIGHT} / 4.5 * ${PHOTO_H} ) - ( 2 * ${IMG_HIGHT} )) / 4 )) | awk '{ print int($1) }')"

# Anwendung des Tools montage
montage \
  ${IMAGE_IN_PATH} ${IMAGE_IN_PATH} ${IMAGE_IN_PATH} ${IMAGE_IN_PATH} \
  -geometry ${IMG_WIDTH}x${IMG_HIGHT}+${BORDER_VERT}+${BORDER_HORT} \
  -quality 100 \
  ${IMAGE_OUT_PATH}

Das Script kann in diesem Repo gefunden werden: https://github.com/MichaelKlemm/passphoto-tools

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert