Preparare tutte le foto di una directory per la stampa, con l’orientamente e le dimensioni corrette.
Necessario imagemagick
#!/bin/bash DIRECTORY=$1 DIMENSIONE_W=$(( 6 * 300 )) DIMENSIONE_H=$(( 4 * 300 )) function rotate { image=$1 echo "Rotating $image" size=`identify -verbose info: ${image} | grep Geometry | grep -E "([0-9]+)" -o ` size_w=`echo $size | cut -f1 -d" "` size_h=`echo $size | cut -f2 -d" "` if [[ $size_w -lt $size_h ]] then convert $image -rotate 90 $image fi } function resize { image=$1 echo "Resizing $image" convert $image -scale ${DIMENSIONE_W}x${DIMENSIONE_H} -noise -3 $image } function main { cd $DIRECTORY for file in `ls -1 *.jpg` do echo "-------------------------------" echo "$file" rotate $file resize $file done } main $@
Come ti comporti se l’EXIF dell’immagine dice che è rotata e il verbose di identify ti dice che la dimensione più larga è quella orizzontale e quindi non la ruota ma la ridimensiona applicando il ridimensionamento come BxA invece che AxB?
Assumento A e B in questo modo
convert $nome -rotate AxB $nome_2
Io ci sto impazzendo dietro 😦
Come non detto, risolto così:
convert $nome1 -auto-orient -resize AxB $nome2