He estado buscando un método de Automator, mediante el cual se redimensiona un archivo de imagen (alto y ancho reducidos) a un tamaño de archivo específico (en bytes), o una proximidad cercana al límite inferior de ese tamaño de archivo.
Sería un gran uso para las acciones rápidas de MacOS Mojave, ya que muchas cargas de sitios web no aceptan imágenes de iPhone de tamaño completo, por ejemplo.
Mi intuición es que este es un problema bastante difícil de resolver para Automator incluso con la ayuda de bash scripting, etc. Por lo general, incluso las aplicaciones como Adobe Photoshop no son muy buenas para predecir el tamaño final del archivo después de comprimirlo en JPG o PNG. etc. Tal vez podría reducir gradualmente las dimensiones de la imagen hasta que sea inferior al tamaño máximo del archivo. Lo más fácil sería si hubiera una utilidad programable para esto.
Por lo tanto, pensé en preguntar si:
Estoy un poco confundido con el enfoque sobre cómo comprimir correctamente las imágenes con las que desea 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 menciona en el comentario, puede verificar cuál es más largo el ancho o el alto y cambiar el tamaño desde allí. Si lo hace man sips
en la Terminal, puede extraer todo tipo de información. El código anterior usa cola y corte para recortar el retorno. El cambio de tamaño se hace con --resampleWidth
. Puede volver a muestrear en función de la altura con --resampleHeight
.
En cuanto al aspecto de compresión, si se trata de PNG, puede usar Optipng . Si desea algo que pueda ejecutar con PNG y JPG, puede usar Trimage . AppleScript/Automater también se puede programar para usar una utilidad de compresión. Solo necesitaría llamar desde bin
un cheque 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á comprobando OptiPNG. Si desea verificar si se instaló algo con HomeBrew, puede usar un comando similar en /usr/local/Cellar
.
Todo lo mencionado anteriormente podría hacerse completamente en un Shell Script. Solo depende de lo que quieras y de cómo quieras ejecutar el código.
quoted form of
cuando trate con rutas de archivos. Esto evitará problemas con espacios, nombres de archivo que contengan comillas y caracteres de escape.Puede escribir un script de shell para hacer lo que quiera y envolverlo dentro de un flujo de trabajo de Automator.
Solo en Automator, esto no es posible. Automator carece de la lógica de bifurcación necesaria para determinar cuándo detenerse.
No conozco ningún atajo, aparte de cambiar el tamaño y comprimir imágenes de diferentes tamaños hasta que cumplan su objetivo.
Esto se puede hacer con las herramientas integradas que se incluyen con macOS, como sips
cambiar el tamaño de la imagen y bash
programar la lógica.
Consulte Reducir el tamaño del archivo de imagen a un tamaño determinado para obtener una pregunta estrechamente relacionada.
ʀ2ᴅ2
CACEROLA