2015. június 22., hétfő

Hogyan tegyünk utólag időbélyeget a fényképeinkre

Nemrégiben szükségem volt arra, hogy meglévő fotókra utólag rákerüljün a készítés időpontja. A legtöbb digitális kamera képes arra, hogy az exponáláskor a képere ráteszi a készítés dátumát. Azonban ha így készülnek a fényképeink, akkor ezt utólag eltüntetni már nem lehet. Ekkor jöhet jól a következő módszer.

Biztosan léteznek rá különféle programok, szerkesztők, amikkel ez manuálisan vagy akár automatikusan is megoldható. Nekem sokkal jobban tetszik az a módszer amikor parancssorban egy szkriptet ráengedek egy könyvtárra és megoldja a feladatot. Nem kell pepecselni, elkészül és kész.

Ami szükséges hozzá az az ImageMagick nevű programcsomag. Ez a csomag létezik Windows, Linux és MacOS verziókban. Én Linuxot használok, így a Linuxos telepítést és szkriptet fogom itt közzétenni.


  1. Telepítsük az ImageMagick csomagot:
    sudo apt-get install imagemagick
  2. Igazán hatásos az LCD Font nevű ingyenes fontkészlet, melyet töltsünk le és csomagoljuk ki valahová. Nem kell telepíteni, a szkriptben kell megadni a könyvtárat ahol a font található. Ha ezt a lépést kihagyjuk akkor egy alapértelmezett betűtípussal fog dolgozni a szkript. 
  3. Íme a szkipt. Ezt másoljuk ki és mentsük el pl. dtmstamp.sh (bármi más név is jó lesz), majd írjuk át a 3. sorban az elérési utat a letöltött fontkészlet helyére.
    #!/bin/sh
    # Change the font variable to point to your font location
    font="/Users/max/Library/Fonts/digital-7 (mono).ttf"
    
    if [ $# -eq 0 ]
       then
          cat << _EOF_
    
    USAGE: $0 file1 file2 ..., or
           $0 *.jpg, or
           $0 dir/*.jpg
           ...
    
    _EOF_
          exit
    fi
    
    while [ "$1" != "" ]; do
            # Skip directories
            if [ -d "$1" ]; then
                    shift
                    continue
            fi
            # Skip already converted files (may get overwritten)
            if [[ $1 == *_DT* ]]
            then
                    echo "------  Skipping: $1"
                    shift
                    continue
            fi
    
            # Work out a new file name by adding "_DT" before file extension
            file=$1
            echo "######  Working on file: $file"
            filename=${file%.*}
            extension=${file##*.}
            output=${filename}_DT.${extension}
    
            # Get the file dimension
            dim=$(identify -format "%w %h" "$file")
            width=${dim%% *}
            height=${dim#* }
    
            # Decide the font size automatically
            if [ $width -ge $height ]
            then
                    pointsize=$(($width/30))
            else
                    pointsize=$(($height/30))
            fi
    
            echo "        Width: $width, Height: $height. Using pointsize: $pointsize"
    
            # The real deal here
            convert "$file" -gravity SouthEast -font "$font" -pointsize $pointsize -fill white -annotate +$pointsize+$pointsize "%[exif:DateTimeOriginal]" "$output"
    
            shift
    done
    
    exit 0
  4. Mentsük a szkritpet és tegyük futtathatóvá:
    chmod +x dtmstamp.sh
  5. Futtassuk a szkriptet a következők szerint:
    ./dtmstamp.sh eleresi_ut/*.jpg
  6. A megadott elérési úton az összes jpg fájlról készül egy másolat. A fájl "_DT" végződéssel lesz átnevezve.  Rákerül a kép készítésének időpontja, mégpedig az ami az EXIF adatokban szerepel. Az EXIF adatok minden fényképre rákerülnek a kép készítésekor, letiltani sem lehet. Természetesen szükséges a fényképezőgépen a dátum pontos beállítása. 
FIGYELEM!!! Ha a kép már szerkesztve lett, akkor előfordulhat (nagy valószínűséggel így lesz) hogy a képszerkesztő program átírja, vagy törli az EXIF adatokat. Célszerű tehát az eredeti vágatlan, módosítatlan nyers képet dátumozni.



A leírás a következő cikk alapján készült: http://dptnt.com/2009/08/add-date-time-stamp-to-jpeg-photos-using-free-software-mac-linux-nix-edition/