Tenho muitas imagens para redimensionar, mas não quero alterar a data de criação. Tentei usar Automator, Photoshop, Preview e cada vez que utilizo o software altera a data de criação das minhas fotos.
Se alguém tiver uma ideia?
Responder1
Tenho muitas imagens para redimensionar, mas não quero alterar a data de criação. Tentei usar Automator, Photoshop, Preview e cada vez que utilizo o software altera a data de criação das minhas fotos.
Você está confundindo a data de criação com a data de modificação? Porque, em última análise, a data de criação de um arquivo nunca deve mudar se um arquivo for modificado; é para isso que serve a data de modificação.
Embora eu não tenha certeza de quais métodos você está usando para redimensionar as imagens, pelo que sei, se você estiver pegando um diretório de imagens - e depois instruindo um script para criar uma imagem derivada com base na imagem de origem - a imagem derivada recém-criada teria uma nova data de criação porque seria simplesmente uma nova cópia do original que é processada de alguma forma.
Mas supondo que você tenha um diretório cheio de imagens que deseja processar e, essencialmente, sobrescrever, eu recomendaria instalar e usar a excelente ferramenta de linha de comandoImagemMagick. Se você não se sentir confortável em instalar o ImageMagick para Mac OS X por meio dos binários oficiais - que funcionam bem, mas podem ser confusos se você não for fluente em linhas de comando - issoexiste um bom instalador de pacote para Mac OS X fornecido pela Cactuslab. Ou você pode até instalar o ImageMagick viaCerveja caseirainstalando-o e executando brew install imagemagick
a partir da linha de comando para instalar o ImageMagick.
Uma vez instalado, você pode executar um script Bash simples como este que usafind
com o ImageMagickconvert
ferramenta de comando para processar as imagens:
find -E 'Desktop/Pics' -type f -iregex '.*\.(JPG|JPEG|PNG|TIF|TIFF)$' |\
while read FULL_IMAGE_PATH
do
convert -density 72 -units PixelsPerInch -resize "1500x1500>" -quality 90 "${FULL_IMAGE_PATH}" "${FULL_IMAGE_PATH}"
done
Neste exemplo, o script procurará o Pics/
diretório na área de trabalho do usuário de trabalho e, em seguida, procurará quaisquer arquivos Pics/
que tenham uma extensão JPG, JPEG, PNG, TIF ou TIFF conectada a eles; a pesquisa não diferencia maiúsculas de minúsculas, portanto versões em minúsculas também serão encontradas. Assim que uma imagem for encontrada, ele converterá o DPI da imagem para 72 e fará isso usando unidades PPI (Pixels por polegada) e redimensionará a imagem para 1500x1500 pixels de largura/altura com base no lado mais longo da imagem se a imagem for maior que 1500 pixels em qualquer que seja o lado mais longo. A qualidade da imagem também está definida para 90.
Eu uso este script Bash simples para processar imagens que desejo que tenham uma resolução relativamente alta e que também estejam prontas para a web. Mas você pode ajustar e ajustar esse comando para atender às suas necessidades. A verdadeira mágica é a find
lógica que percorrerá a árvore de diretórios e substituirá as imagens no lugar. E ao fazer isso a data de criação é mantida e apenas a data de modificação é alterada no arquivo.
Responder2
Como passei algumas horas tentando descobrir por que algumas das minhas fotos foram convertidas sem preservação de data, mesmo com mogrify -define preserve-timestamp=true
, aqui está o que descobri:
Relatório
Parece que o arquivo “data de nascimento” tem sua importância (principalmente para Apple Photos). Você pode acessá-lo através de: stat -x pic.jpg
e obterá algo assim:
File: "pic.jpg"
Size: 186321 FileType: Regular File
Access: Thu Apr 11 09:19:19 2024
Modify: Tue Jan 5 09:14:41 2021
Change: Thu Apr 11 09:19:18 2024
Birth: Mon Jan 4 16:40:00 2021 ← here is the important one !
Ferramentas
stat
Como eu disse, o preserve-timestamp
don não parece preservar a data de nascimento, então estou usando stat
o comando para obter a data de nascimento:
$ stat -f "%SB" -t "%Y:%m:%d %T%z" pic.jpg
2021:01:04 16:40:00+0100 ← to get a clean birth date
$ stat -f "%Sm" -t "%Y:%m:%d %T%z" pic.jpg
2021:01:05 09:14:41+0100 ← to get a clean modify date
exiftool
e exiftool
para salvá-lo no arquivo convertido:
exiftool "-FileCreateDate=2021:01:04 16:40:00+0100" "-FileModifyDate= 2021:01:05 09:14:41+0100" pic.heic
Resultado como uma linha
Aqui está um exemplo de como estou convertendo jpg
para heic
, depois de exportá-los do Apple Photos (de uma pasta inteligente, a filtragem no nome do arquivo inclui "jpg"):
for i in *.jpg ;
do convert $i "${i%.*}.heic"
&& exiftool -q "-FileCreateDate=$(stat -f "%SB" -t "%Y:%m:%d %T%z" "$i")" "-FileModifyDate=$(stat -f "%Sm" -t "%Y:%m:%d %T%z" "$i")" "${i%.*}.heic" ;
done
É bem lento (30+min para 1700 fotos / 1,5 Go…), mas consigo o resultado que procurava, com exatamente a mesma data de nascimento (e uma redução de tamanho de 1,5Go para 530Mo). Posso adicionar as heic
fotos no Apple Photo e elas serão colocadas no lugar certo. Esperando que isso possa ajudar!