web-dev-qa-db-fra.com

Comment redimensionner des images en utilisant un terminal sur Mac OSX?

J'ai besoin d'un moyen simple et gratuit pour redimensionner les images et effectuer des travaux par lots, si nécessaire. Le logiciel de manipulation d'images gratuit a été plus difficile à utiliser qu'il ne devrait l'être.

52
Marcel

Comme l'a souligné LifeHacker, la commande suivante le fera très facilement:

sips -Z 640 *.jpg

Pour citer leur explication:

"Alors qu'est-ce qui se passe? Eh bien," sips "est la commande utilisée et -Z lui indique de maintenir le rapport hauteur/largeur de l'image." 640 "est la hauteur et la largeur maximales à utiliser et" * .jpg "indique à votre ordinateur de réduire la taille chaque image se terminant par .jpg. C'est vraiment simple et rétrécit vos images très rapidement. Assurez-vous tout d'abord de faire une copie si vous souhaitez également conserver leur plus grande taille. "

Source: http://lifehacker.com/5962420/batch-resize-images-quickly-in-the-os-x-terminal

106
Marcel

imagemagick aide:

$ convert foo.jpg -resize 50% bar.jpg

Il peut faire beaucoup plus de choses, y compris la conversion entre les formats, l'application d'effets, le recadrage, la colorisation et bien plus encore.

13
L3viathan

Voici un script qui utilise sips pour redimensionner récursivement toutes les images dans un dossier donné (et ses sous-dossiers), et place les images redimensionnées dans un dossier resized au même niveau d'arborescence que le image: https://Gist.github.com/lopespm/893f323a04fcc59466d7

#!/bin/bash
# This script resizes all the images it finds in a folder (and its subfolders) and resizes them
# The resized image is placed in the /resized folder which will reside in the same directory as the image
#
# Usage: > ./batch_resize.sh

initial_folder="/your/images/folder" # You can use "." to target the folder in which you are running the script for example
resized_folder_name="resized"

all_images=$(find -E $initial_folder -iregex ".*\.(jpg|gif|png|jpeg)")

while read -r image_full_path; do
    filename=$(basename "$image_full_path");
    source_folder=$(dirname "$image_full_path");
    destination_folder=$source_folder"/"$resized_folder_name"/";
    destination_full_path=$destination_folder$filename;

    if [ ! -z "$image_full_path" -a "$image_full_path" != " " ] &&
        # Do not resize images inside a folder that was already resized
        [ "$(basename "$source_folder")" != "$resized_folder_name" ]; then 

        mkdir "$destination_folder";
        sips -Z 700 "$image_full_path" --out "$destination_full_path";

    fi

done <<< "$all_images"
5
Pedro Lopes

Les réponses précédentes sont correctes, vous pouvez également utiliser mogrify. Par exemple, si vous souhaitez réduire de 60% la taille de nombreuses images d'un répertoire, vous pouvez utiliser la commande ci-dessous:

bien sûr, faites toujours une sauvegarde de vos images dans un autre répertoire avant de jouer avec cette commande.

mogrify -resize 60% *
3
grepit

astuce magique pour itunesconnect :)

    mkdir ./iPhone5-5-Portrait
    sips -z 2208 1242 *.jpg -s formatOptions 70 --out ./iPhone5-5-Portrait
    sips -z 2208 1242 *.png --out ./iPhone5-5-Portrait
3
user3682947