Tengo muchas imágenes para cambiar el tamaño, pero no quiero cambiar la fecha de creación. Intenté usar Automator, Photoshop, Preview y cada vez que lo uso, el software cambia la fecha de creación de mis imágenes.
¿Si alguien tiene una idea?
Respuesta1
Tengo muchas imágenes para cambiar el tamaño, pero no quiero cambiar la fecha de creación. Intenté usar Automator, Photoshop, Preview y cada vez que lo uso, el software cambia la fecha de creación de mis imágenes.
¿Estás confundiendo la fecha de creación con la fecha de modificación? Porque, en última instancia, la fecha de creación de un archivo nunca debería cambiar si se modifica un archivo; para eso es la fecha de modificación.
Si bien no estoy seguro de qué métodos está utilizando para cambiar el tamaño de las imágenes, por lo que sé, si está tomando un directorio de imágenes y luego le dice a un script que cree una imagen derivada basada en la imagen de origen, la imagen derivada recién creada tendría una nueva fecha de creación porque simplemente sería una nueva copia del original que se procesa de alguna manera.
Pero suponiendo que tenga un directorio lleno de imágenes que desee procesar y, esencialmente, sobrescribir, le recomendaría instalar y utilizar la excelente herramienta de línea de comandos.ImagenMagia. Si no se siente cómodo instalando ImageMagick para Mac OS X a través de los binarios oficiales (que funcionan bien, pero pueden resultar confusos si no domina la línea de comandos), estoCactuslab proporciona un buen instalador de paquetes para Mac OS X. O incluso puedes instalar ImageMagick a través decerveza caserainstalándolo y luego ejecutándolo brew install imagemagick
desde la línea de comando para instalar ImageMagick.
Una vez instalado, puede ejecutar un script Bash simple como este que usafind
con ImageMagickconvert
herramienta de comando para procesar las imágenes:
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
En este ejemplo, el script buscará el Pics/
directorio en el escritorio de su usuario de trabajo y luego buscará cualquier archivo dentro Pics/
que tenga una extensión de JPG, JPEG, PNG, TIF o TIFF conectada; la búsqueda no distingue entre mayúsculas y minúsculas, por lo que también se encontrarán versiones en minúsculas. Una vez que se encuentra una imagen, convertirá el DPI de la imagen a 72 y lo hará usando unidades de PPI (píxeles por pulgada) y cambiará el tamaño de la imagen a 1500x1500 píxeles de ancho/alto según el lado más largo de la imagen si la imagen es más grande que 1500 píxeles en cualquiera que sea el lado más largo. La calidad de la imagen también está configurada en 90.
Utilizo este sencillo script Bash para procesar imágenes. Quiero que tengan una resolución relativamente alta y al mismo tiempo estén listas para la web. Pero puedes ajustar y modificar ese comando para adaptarlo a tus necesidades. La verdadera magia es la find
lógica que atravesará el árbol de directorios y sobrescribirá las imágenes en su lugar. Y al hacerlo, se conserva la fecha de creación y solo se cambia la fecha de modificación en el archivo.
Respuesta2
Como pasé algunas horas tratando de descubrir por qué algunas de mis imágenes se convirtieron sin conservar la fecha, incluso con mogrify -define preserve-timestamp=true
, esto es lo que encontré:
Informe
Parece que el archivo "fecha de nacimiento" tiene su importancia (especialmente para Apple Photos). Puedes acceder a él a través de: stat -x pic.jpg
y obtendrás algo como esto:
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 !
Herramientas
stat
Como dije, preserve-timestamp
no parece conservar la fecha de nacimiento, por lo que he estado usando stat
el comando para obtener la fecha de nacimiento:
$ 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
y exiftool
guardarlo en el archivo convertido:
exiftool "-FileCreateDate=2021:01:04 16:40:00+0100" "-FileModifyDate= 2021:01:05 09:14:41+0100" pic.heic
Resultado en una sola línea
Aquí hay un ejemplo mientras estoy convirtiendo jpg
a heic
, después de exportarlos desde Apple Photos (desde una carpeta inteligente que filtra por Nombre de archivo incluye "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
Es bastante lento (más de 30 minutos para 1700 fotografías / 1,5 Go…), pero obtengo el resultado que estaba buscando, con exactamente la misma fecha de nacimiento (y una reducción de tamaño de 1,5Go a 530Mo). Puedo agregar las heic
imágenes en Apple Photo y se colocarán en el lugar correcto. ¡Esperando que esto pueda ayudar!