GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fügen Sie dem Bild über die Linux-Befehlszeile einen Zeitstempel hinzu

Wenn Sie das Erstellungsdatum der Bilddatei in das Bild selbst schreiben möchten (wenn Sie das nicht möchten, bearbeiten Sie bitte Ihre Frage), können Sie imagemagick verwenden .

  1. Installieren Sie ImageMagick, falls es noch nicht installiert ist:

    sudo apt-get install imagemagick
    
  2. Führen Sie eine Bash-Schleife aus, die das Erstellungsdatum jedes Fotos erhält, und verwenden Sie convert ab imagemagick Suite, um das Bild zu bearbeiten:

    for img in *jpg; do convert "$img" -gravity SouthEast -pointsize 22 \
       -fill white -annotate +30+30  %[exif:DateTimeOriginal] "time_""$img"; 
    done
    

    Für jedes Bild mit dem Namen foo.jpg , wird eine Kopie mit dem Namen time_foo.jpg erstellt mit dem Zeitstempel unten rechts. Sie können dies eleganter machen, für mehrere Dateitypen und schöne Ausgabenamen, aber die Syntax ist etwas komplexer:

OK, das war die einfache Version. Ich habe ein Skript geschrieben, das mit komplexeren Situationen, Dateien in Unterverzeichnissen, seltsamen Dateinamen usw. umgehen kann. Soweit ich weiß, können nur .png- und .tif-Bilder EXIF-Daten enthalten, daher macht es keinen Sinn, dies auf anderen Formaten auszuführen . Als mögliche Problemumgehung können Sie jedoch das Erstellungsdatum der Datei anstelle der EIF-Daten verwenden. Dies ist jedoch sehr wahrscheinlich nicht dasselbe wie das Datum, an dem das Bild aufgenommen wurde, sodass im folgenden Skript der relevante Abschnitt auskommentiert ist. Entfernen Sie die Kommentare, wenn Sie möchten, dass sie auf diese Weise verarbeitet werden.

Speichern Sie dieses Skript unter add_watermark.sh und führen Sie es in dem Verzeichnis aus, das Ihre Dateien enthält:

bash /path/to/add_watermark.sh

Es verwendet exiv2 die Sie möglicherweise installieren müssen (sudo apt-get install exiv2 ). Das Skript:

#!/usr/bin/env bash

## This command will find all image files, if you are using other
## extensions, you can add them: -o "*.foo"
find . -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.tif" -o \
 -iname "*.tiff" -o -iname "*.png" | 

## Go through the results, saving each as $img
while IFS= read -r img; do
    ## Find will return full paths, so an image in the current
    ## directory will be ./foo.jpg and the first dot screws up 
    ## bash's pattern matching. Use basename and dirname to extract
    ## the needed information.
    name=$(basename "$img")
    path=$(dirname "$img")
    ext="${name/#*./}"; 

    ## Check whether this file has exif data
    if exiv2 "$img" 2>&1 | grep timestamp >/dev/null 
    ## If it does, read it and add the water mark   
    then
    echo "Processing $img...";
    convert "$img" -gravity SouthEast  -pointsize 22 -fill white \
             -annotate +30+30  %[exif:DateTimeOriginal] \
             "$path"/"${name/%.*/.time.$ext}";
    ## If the image has no exif data, use the creation date of the
    ## file. CAREFUL: this is the date on which this particular file
    ## was created and it will often not be the same as the date the 
    ## photo was taken. This is probably not the desired behaviour so
    ## I have commented it out. To activate, just remove the # from
    ## the beginning of each line.

    # else
    #   date=$(stat "$img" | grep Modify | cut -d ' ' -f 2,3 | cut -d ':' -f1,2)
    #   convert "$img" -gravity SouthEast  -pointsize 22 -fill white \
    #          -annotate +30+30  "$date" \
    #          "$path"/"${name/%.*/.time.$ext}";
    fi 
done

Linux
  1. Konfigurieren Sie einen Linux-Arbeitsbereich remote über die Befehlszeile

  2. 4 Möglichkeiten zum Senden von E-Mail-Anhängen über die Linux-Befehlszeile

  3. Grundlagen der Linux-Befehlszeile – Ausführen von Befehlen über die Befehlszeile

  4. Hochladen von Dateien in das S3-Konto über die Linux-Befehlszeile

  5. MySQL-Anmeldeinformationen über die Linux-Befehlszeile testen?

So starten (rebooten) Sie Linux von der Befehlszeile aus

So überprüfen Sie Wetterdetails von der Befehlszeile in Linux

So passen Sie die Monitorhelligkeit über die Befehlszeile in Linux an

Kopieren Sie eine Datei in mehrere Verzeichnisse von der Befehlszeile unter Linux

So überprüfen Sie die Linux-Netzwerkstatistik über die Befehlszeile

Senden Sie E-Mail in Linux von der Befehlszeile aus