Estoy un poco confundido con el enfoque sobre cómo comprimir correctamente las imágenes con las que deseas trabajar. Como se mencionó, hay sips
, un ejemplo de trabajo basado en extraer un directorio de imágenes y recorrer la lista con un cambio de tamaño si el ancho no es 800px:
property theWidth : 800
tell application "Finder"
try
## Choose directory
set imageDir to choose folder with prompt "Please select directory."
## Get list of items in diretory
set the imageList to list folder imageDir without invisibles
## Step through images
repeat with theImage in imageList
## Turn path to posix path
set imagePos to quoted form of POSIX path of ((imageDir as text) & contents of theImage)
## Get image width
set imgWidth to (do shell script "sips -g pixelWidth " & " " & imagePos & " " & "| tail -n1 | cut -d' ' -f4") as integer
## if not equal to set variable width resize
if imgWidth ≠ theWidth then do shell script "sips --resampleWidth " & theWidth & " " & imagePos
end repeat
on error error_message
display dialog error_message
end try
Eso es solo un ejemplo de lo que puedes hacer con el ancho. Como se mencionó en el comentario, puede verificar cuál es el ancho o el alto y cambiar el tamaño desde allí. Si haces man sips
en la Terminal, puedes extraer todo tipo de información. El código anterior utiliza la cola y el corte para recortar la devolución. El cambio de tamaño se realiza con --resampleWidth
. Podría volver a muestrear en función de la altura con --resampleHeight
.
Con respecto al aspecto de la compresión, si se trata de PNG, puede utilizar Optipng . Si desea algo que pueda ejecutar con PNG y JPG, puede usar Trimage . AppleScript / Automater también podría tener secuencias de comandos para usar una utilidad de compresión. Solo deberías llamar desde bin
a check si existe una compresión:
try
set checkBin to "(ls usr/local/bin/optipng >> /dev/null 2>&1 && echo yes) || echo no"
return do shell script checkBin
on error error_message
return error_message
end try
Lo anterior está verificando OptiPNG. Si quisiera comprobar si se instaló algo con HomeBrew, podría usar un comando similar en /usr/local/Cellar
.
Todo lo anterior se podría hacer completamente en un script de shell. Solo depende de lo que quieras y de cómo quieres ejecutar el código.