Elaborazione grafica


#1

Buona giornata a tutti.
Un’amica mi ha chiesto aiuto per un problema risoltole altre volte in passato. Non ho esitato a dirle di si, in quanto ricordavo di averlo risolto facilmente con Kim.
Al momento di farlo, Kim non funziona più. E sulla mandriva più recente non mi si installa nemmeno.
Al momento non mi sono preoccupato molto: Kim usa ImageMagick quindi posso farlo anch’io direttamente.
Il problema è semplice: una serie di immagini visualizzate in verticale (la maggior parte 3937x5906) devono essere trasformate in foto dal formato quadrato (verranno visualizzate su un particolare hardware che lo pretende).
Ho provato con il comando

mogrify -extent 5906 /home/angelo/Scrivania/fotoprove/*.jpg

ma il risultato non è ottimale. La foto diventa effettivamente quadrata, ma perchè viene aggiunto uno spazio bianco a dx.
Preferirei rimanesse centrata e con due bande nere laterali, non bianche.
Qualcuno conosce il modo per risolvere? O un altro software che permetta lo stesso lavoro?
Purtroppo si parla di migliaia di foto e la riga di comando sembra l’unica opzione praticabile.

P.s.
Vediamo se stavolta riesco a mettere i tag giusti :wink:

Edit
Piano piano ci arrivo

mogrify -extent 5906 -background black -gravity Center /home/angelo/Scrivania/fotoprove/*.jpg

Così la foto diventa quadrata, con bande nere.

Adesso mi serve veramente il vostro aiuto, perchè un conto è trovare un comando, un altro fare uno script.
C’è il modo per modificare il comando (inserendolo magari in uno script bash) affinchè si applichi solo a foto verticali? magari adattandosi in caso di risoluzioni diverse da quella indicata?
Grazie in anticipo al mago degli script, se si paleserà!


#2

Ciao

puoi provare ad utilizzare il seguente script che ho scritto al volo (non l’ho testato perciò fai il backup delle immagini prima di farlo girare!!!).

#!/bin/sh

# ripete i comandi su tutti i file *jpg
for img in *jpg
do
   # altezza dell'imagine
   h=$(identify -ping -format "%[h]"  "$img")
   # larghezza dell'imagine
   w=$(identify -ping -format "%[w]"  "$img")

   # trova la dimensione maggiore
   # if [[ $h -gt $w ]]
   # then
   #     s=$h
   # else
   #     s=$w
   # fi
   [ $h -gt $w ] && s=$h || s=$w

   # ridimensiona l'immagine     
   mogrify -extent $s -background black -gravity Center "$img"
done

Se hai salvato lo scritp con il nome resimg.sh in /home/angelo/Scrivania/fotoprove_test/ lo puoi utilizzare con i seguenti comandi:

cd /home/angelo/Scrivania/fotoprove_test/
sh ./resimg.sh

PS: di solito preferisco convert a mogrify poiché lavora su una copia invece che sull’immagine originale.


#3

Una sola parola: MAGICO!
Questo semplice ed efficiente script ha ottenuto due risultati: mi libera un pomeriggio nel weekend e mi fa tornare la voglia di riprendere a scriptare.
I danni causati dall’interfaccia grafica fortunatamente non sono irreversibili :smile:

Grazie tante dell’aiuto.

P.s. Visto che a me serve che converta solo le immagini verticali mi sono permesso di modificarlo un po’.

#!/bin/sh

# ripete i comandi su tutti i file *jpg
for img in *jpg
do
# altezza dell'imagine
h=$(identify -ping -format "%[h]"  "$img")
# larghezza dell'imagine
w=$(identify -ping -format "%[w]"  "$img")

# verifica orientamento
if [[ $h -gt $w ]]
then

 # ridimensione l'immagine     
mogrify -extent $h -background black -gravity Center "$img"

fi

done

A volte basta un piccolo input per rimettere in moto meccanismi dimenticati


#4

Scriptare allunga la vita … :smile: