Automator: ¿Es posible cambiar el tamaño de una imagen a un tamaño máximo de archivo?

1

He estado buscando un método Automator, en el que un archivo de imagen se redimensione (altura 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 scripts de bash, etc. Por lo general, incluso las aplicaciones como Adobe Photoshop no son excelentes para predecir el tamaño final del archivo después de que un archivo se comprime a JPG o PNG, etc. Tal vez podría disminuir gradualmente las dimensiones de la imagen hasta que sea más baja que el tamaño máximo del archivo. Lo más fácil sería si fuera una utilidad de secuencias de comandos para esto.

Por lo tanto pensé preguntar si:

  • a) Es factible, y
  • b) ¿Cómo se haría?
pregunta Winterflags 26.11.2018 - 11:31

2 respuestas

1

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.

    
respondido por el ʀ2ᴅ2 26.11.2018 - 14:35
1

Sí, con un script de shell

Podría 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 tengo conocimiento de ningún acceso directo, excepto para cambiar el tamaño y comprimir imágenes de diferentes tamaños hasta que cumplan con su objetivo.

Esto se puede hacer con las herramientas integradas incluidas en macOS, como sips para cambiar el tamaño de la imagen y bash para la secuencia de comandos de la lógica.

Consulte Reduzca el tamaño del archivo de imagen a cierto tamaño para una pregunta estrechamente relacionada.

    
respondido por el Graham Miln 26.11.2018 - 14:02

Lea otras preguntas en las etiquetas