O Picasa reeditou todas as minhas fotos aleatoriamente

1

Eu uso o Picasa para gerenciar minhas fotos. Eu mudei recentemente de uma máquina Windows para um Mac, então eu usei um disco rígido externo para transferir minhas fotos do computador antigo para o novo. Tudo estava bem no começo, mas agora o Picasa parece ter uma data de arquivo diferente dos metadados da foto (em alguns casos com vinte anos de diferença). Parece ter redigido todas as minhas fotos aleatoriamente. Eles, portanto, não ordenam mais a ordem das datas.

Eu removi e substituí a pasta como uma pasta monitorada e atualizei todas as miniaturas, mas isso não me deu o comportamento desejado. O que posso fazer para restaurar as datas corretas em minhas fotos?

    
por sunnyday451 02.08.2012 / 21:16

1 resposta

0

Portanto, aqui está um script de exemplo que renomeará em massa arquivos de imagem para um padrão que comece com a data e a hora em que a imagem foi tirada de acordo com os dados EXIF incorporados. Faz algumas outras coisas também. Você precisará ajustá-lo às suas próprias necessidades. Eu incluo o nome da câmera no nome da imagem no caso de eu ter uma colisão de data / hora e porque isso me ajuda a saber quem tirou a foto. Ele também adicionará um número de seqüência no final do nome se houver uma colisão de nomes.

Você precisará de duas ferramentas de linha de comando: jhead e exiftool , embora seja possível alterá-lo para usar apenas um provavelmente. É um script BASH, portanto, deve funcionar onde quer que o BASH e os dois helpers possam ser executados - geralmente o executo em um laptop Windows usando o Cygwin.

#!/bin/bash

# Rename camera files to a standard

# jhead (jhead -n%Y-%m-%d %H-%M-%S-Camera Name.jpg)
# exiftool, exiv2, exif


case $1 in
    --help|-h|-?)
        echo ' '
        echo 'Rename a folder full of files to match the date/time taken and the camera model:'
        echo '  "IMG_0001.jpg"   ==>   "2007-05-30 13-24-05-Canon PowerShot A720 IS.jpg"'
        echo '  Adds a letter to end of name if the result is not unique'
        echo ' '
        echo 'Please use as:'
        echo '  rename.sh folderName [t]'
        echo 'Where:'
        echo '  folderName is absolute or relative to current folder'
        echo '  t, if present prints the command that would be used'
        echo ' '
        echo 'Requirements:'
        echo '  1) jhead (detects camera type)'
        echo '  2) exiftool (renames non-jpg files)'
        echo ' '
        echo 'Use the following workflow:'
        echo '  1) Copy files and folders from the camera(s) to a temp folder'
        echo '  2) Run this against the temp folder and check the renames'
        echo '  3) Manually rename any left-overs'
        echo '  4) Add IPTC comments, locations, etc.'
        exit
esac

if [ -z "$1" ]; then
    #echo 'You need to specify the folder to work on (end with a trailing /)'
    ## use pwd instead
    FOLDER="'pwd'"
else
    FOLDER=$1
fi

if [ -x /usr/bin/jhead ]; then
    # Check if starts with leading / if not, then prepend pwd for safety
    #   NB: Note the substring processing: ${varname:start:numChars}
    if [ ${FOLDER:0:1} != '/' ]; then
        FOLDER="'pwd'/$FOLDER"
    fi

    # Add trailing / if required
    if [ ${FOLDER:${#FOLDER}-1:1} != '/' ]; then
        FOLDER="$FOLDER/"
    fi

    echo "$FOLDER"
    cd "$FOLDER"

    # Make sure all files are writable
    chmod +w *

    # Turn upper case extensions into lower case <== CANCEL THIS, the case helps id the camera
    #echo "rename 's/\.JPG$/.jpg/' *.JPG"
    #/usr/bin/rename 's/\.JPG$/.jpg/' *.JPG
    # The above seems to have stopped working for some reason, try this instead
    #echo "/usr/bin/rename '.JPG' '.jpg' *.JPG"
    #/usr/bin/rename '.JPG' '.jpg' *.JPG

    ## REPLACE jhead WITH exiftool
    ARTIST1=" '-IPTC:By-line=Julian Knight, http://www.knightnet.org.uk/contact.htm?toname=JulianPhotos' "
    ARTIST2=" '-IPTC:By-line=James Knight, http://www.knightnet.org.uk/contact.htm?toname=JamesPhotos' "
    COPYRIGHT=" '-IPTC:CopyrightNotice<Copyright © ${CreateDate} Julian Knight, all rights reserved' -d '%Y' "
    ##  IPTC meta (Creator, Rights in XMP)
    ## Move to folders: ./mm-mmm

    echo "jhead -model A70 -exonly -nf'%Y-%m-%d %H-%M-%S-Canon PowerShot A70' -ft *.jpg"
    jhead -model A70 -exonly -nf'%Y-%m-%d %H-%M-%S-Canon PowerShot A70' -ft *.jpg

    echo "jhead -model A720 -exonly -nf'%Y-%m-%d %H-%M-%S-Canon PowerShot A720 IS' -ft *.jpg"
    jhead -model A720 -exonly -nf'%Y-%m-%d %H-%M-%S-Canon PowerShot A720 IS' -ft *.jpg

    echo "jhead -model A720 -exonly -nf'%Y-%m-%d %H-%M-%S-Canon PowerShot A720 IS' -ft *.JPG"
    jhead -model A720 -exonly -nf'%Y-%m-%d %H-%M-%S-Canon PowerShot A720 IS' -ft *.JPG

    echo "jhead -model Hero -exonly -nf'%Y-%m-%d %H-%M-%S-MDA Compact III' -ft *.jpg"
    jhead -model Hero -exonly -nf'%Y-%m-%d %H-%M-%S-MDA Compact III' -ft *.jpg

    echo "jhead -model T8282 -exonly -nf'%Y-%m-%d %H-%M-%S-HTC Touch HD' -ft *.jpg"
    jhead -model T8282 -exonly -nf'%Y-%m-%d %H-%M-%S-HTC Touch HD' -ft *.jpg

    echo "jhead -model DCR-PC120E -exonly -nf'%Y-%m-%d %H-%M-%S-Sony DCR-PC120E' -ft *.jpg"
    jhead -model DCR-PC120E -exonly -nf'%Y-%m-%d %H-%M-%S-Sony DCR-PC120E' -ft *.jpg

    echo "jhead -model D90 -exonly -nf'%Y-%m-%d %H-%M-%S-NIKON D90' -ft *.JPG"
    jhead -model D90 -exonly -nf'%Y-%m-%d %H-%M-%S-NIKON D90' -ft *.JPG

    # James' Samsung S860 Make: Samsung Techwin, Model: <KENOX S860  / Samsung S860>
    echo "jhead -model S860 -exonly -nf'%Y-%m-%d %H-%M-%S-Samsung S860' -ft sdc?????.jpg"
    jhead -model S860 -exonly -nf'%Y-%m-%d %H-%M-%S-Samsung S860' -ft sdc?????.jpg
    #exiftool '-if $make eq "Samsung Techwin"' '-if $model eq "<KENOX S860  / Samsung S860>"' -overwrite_original_in_place sdc?????.jpg

    # Deal with .NEF (Nikon Raw) files (rename to YYYY-MM-DD HH-MM-SS-NIKON D90-DSC_????.NEF)
    exiftool '-FileName<${CreateDate}-NIKON D90-%f.%e' -d '%Y-%m-%d %H-%M-%S' DSC_????.NEF
    # Use %c to add seq num where required

    # Deal with .AVI files (rename to YYYY-MM-DD HH-MM-SS-NIKON D90-DSC_????.AVI)
    exiftool '-FileName<${FileModifyDate}-NIKON D90-%f.%e' -d '%Y-%m-%d %H-%M-%S' DSC_????.AVI

    # Deal with .AVI files (rename to YYYY-MM-DD HH-MM-SS-Samsung S860-sdc?????.avi)
    exiftool '-FileName<${FileModifyDate}-Samsung S860-%f.%e' -d '%Y-%m-%d %H-%M-%S' sdc?????.avi

    echo ' '
    echo 'FINISHED RENAME'
    echo ' '
else
    echo 'You need to install jhead first'
fi

Observe que você precisará descobrir o nome do Criador que sua câmera usa nos dados EXIF e alterar os comandos apropriadamente se quiser incluir um nome de câmera.

Execute isso em cada pasta de imagens e você deve terminar com todas elas nomeadas de forma que sempre classifiquem por nome na ordem em que foram tiradas, não importando o que o sistema operacional ou outras ferramentas façam no arquivo. datas de criação e modificação. Note que você nunca pode realmente confiar neles de qualquer maneira, já que existem vários motivos pelos quais eles podem mudar (por exemplo, as datas de criação podem ser redefinidas após alguns comandos copy / move).

    
por 02.08.2012 / 22:59