Cambiar el tamaño de las imágenes por lotes en Mac OS X sin cambiar la fecha de creación

Cambiar el tamaño de las imágenes por lotes en Mac OS X sin cambiar la fecha de creación

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 imagemagickdesde la línea de comando para instalar ImageMagick.

Una vez instalado, puede ejecutar un script Bash simple como este que usafindcon ImageMagickconvertherramienta 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 findló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.jpgy 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-timestampno parece conservar la fecha de nacimiento, por lo que he estado usando statel 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 exiftoolguardarlo 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 jpga 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 heicimágenes en Apple Photo y se colocarán en el lugar correcto. ¡Esperando que esto pueda ayudar!

información relacionada