7 votes

Comment utilisez-vous "sips" dans le terminal pour redimensionner une image sans agrandissement ?

J'ai du code que j'utilise pour redimensionner des images dans Mac OS X via l'invite de commande (et/ou quicksilver), à une largeur ou hauteur maximale de 500px. Le seul problème est que si l'image originale est plus petite que 500px de largeur ou hauteur, sips la redimensionnera. Je voudrais qu'il saute simplement ces images.

Comment puis-je réaliser cela?

Voici mon code:

#!/bin/bash

for ARG in "$@"
    do
        sips -Z 500 -s format jpeg "$ARG" --out "${ARG%.\*}.jpg"
done

5voto

Daniel Beck Points 105590

Traitez la sortie de sips --getProperty pixelHeight nom_fichier.ext et sips --getProperty pixelWidth nom_fichier.ext et utilisez-la dans une condition, en ne réalisant l'opération de redimensionnement que si nécessaire.


#!/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 "fichier volumineux nécessite une réduction"
fi

Vous pouvez faire le reste par vous-même.

0voto

Gianfranco P. Points 293

Cela lit la largeur et la hauteur de l'image en une seule commande

#!/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 "fichier trop grand nécessite une réduction"
fi

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X