2 votos

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

He estado mirando a su alrededor para un Automator método, por el cual un archivo de imagen es el tamaño (reducción de la altura y anchura) para un determinado tamaño del archivo (en bytes), o cerca de una zona de menor obligada la proximidad de que el tamaño del archivo.

Sería un gran uso para MacOS Mojave de Acciones Rápidas, como muchos sitios web de las subidas de no aceptar de tamaño completo en el iPhone de imágenes, por ejemplo.

Mi intuición es que este es un problema difícil de Automator para resolver incluso con la ayuda de scripts de bash, etc. Generalmente, incluso aplicaciones como Adobe Photoshop no son muy buenos para predecir el tamaño final del archivo después de que un archivo está comprimido en un archivo JPG o PNG, etc. Tal vez podría incrementalmente inferior de las dimensiones de la imagen hasta que sea menor que el tamaño máximo de archivo. Más fácil sería si fue una secuencias de comandos de utilidad para esto.

Por eso pensé para preguntar si:

  • a) ¿Se puede hacer algo, y
  • b) ¿Cómo se puede hacer?

2voto

Darth_Vader Puntos 138

Estoy un poco confundido con el enfoque sobre la manera correcta de comprimir las imágenes que desea trabajar. Como se ha mencionado, hay sips, un ejemplo de trabajo basado en tirar de un directorio de imágenes y paso a paso a través de la lista con un cambio de tamaño si la anchura 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

Que es sólo un ejemplo de lo que puede hacer con el ancho. Como se mencionó en el comentario que usted puede comprobar para ver que es más largo que la anchura o la altura y cambiar el tamaño a partir de ahí. Si no man sips en el Terminal se puede tirar todo tipo de información. El código anterior utiliza la cola y corte para recortar el retorno. Cambio de tamaño se realiza con --resampleWidth. Usted podría volver a muestrear en función de la altura con --resampleHeight.

Con respecto a la compresión de aspecto, si estos son los archivos Png se puede utilizar Optipng. Si usted quiere algo que se puede ejecutar con los archivos Png y Jpg usted podría utilizar Trimage. AppleScript/Automater también podría ser enlistados en el uso de una utilidad de compresión. Usted sólo necesita llamar desde bin la casilla de verificación 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

La de arriba es la comprobación de OptiPNG. Si usted quería comprobar si algo se ha instalado con HomeBrew usted podría utilizar un comando similar en /usr/local/Cellar.

Todos los anteriormente mencionados podrían ser completamente hecho en un Script de Shell. Sólo depende de lo que se quiere y cómo se quiere ejecutar el código.

1voto

Steve Evans Puntos 155

Sí, con un script de shell

Podría escribir un script de shell para hacer lo que quieres y envoltura de que dentro de un flujo de trabajo de Automator.

En Automator, esto no es posible. Automator carece de la ramificación de la lógica necesaria para determinar cuándo parar.

Yo no soy consciente de todos los accesos directos, aparte de cambiar el tamaño y comprimir diferentes imágenes de tamaño hasta que cumplan su objetivo.

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

Véase Reducir el tamaño del archivo de imagen a tamaño determinado para una estrechamente relacionadas con la cuestión.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X