Wie verwenden Sie „Sips“ am Terminal, um die Größe eines Bildes zu ändern, ohne es hochskalieren zu müssen?

Wie verwenden Sie „Sips“ am Terminal, um die Größe eines Bildes zu ändern, ohne es hochskalieren zu müssen?

Ich habe Code, den ich verwendet habe, um Bilder in Mac OS X über die Eingabeaufforderung (und/oder Quicksilver) auf eine maximale Breite oder Höhe von 500 Pixel zu skalieren. Das einzige Problem ist, dass Sips das Originalbild hochskaliert, wenn es kleiner als 500 Pixel Breite oder Höhe ist. Ich möchte, dass diese Bilder einfach übersprungen werden.

Wie kann ich das erreichen?

Dies ist mein Code:

#!/bin/bash

für ARG in "$@"
    Tun
        sips -Z 500 -s format jpeg "$ARG" --out "${ARG%.*}.jpg"
Erledigt

Antwort1

Verarbeiten Sie die Ausgabe von sips --getProperty pixelHeight filename.extund sips --getProperty pixelWidth filename.extund verwenden Sie sie in einer Bedingung. Führen Sie den Größenänderungsvorgang nur bei Bedarf aus.


#!/bin/bash
height=`sips --getProperty pixelHeight url.png | sed -E "s/.*pixelHeight: ([0-9]+)/\1/g" | tail -1`
width=`sips --getProperty pixelWidth url.png | sed -E "s/.*pixelWidth: ([0-9]+)/\1/g" | tail -1`

if [[ $height -gt 500 || $width -gt 500 ]]; then
    growlnotify -m "large file needs reducing"
fi

Den Rest können Sie alleine erledigen.

Antwort2

Dies liest die Breite und Höhe des Bildes in einem Befehl

#!/bin/bash
size=($(sips -g pixelWidth -g pixelHeight $theFile | grep -o '[0-9]*$'))

if [[ ${size[0]} -gt 500 || ${size[1]} -gt 500 ]]; then
    growlnotify -m "large file needs reducing"
fi

verwandte Informationen