Avete mai scannerizzato la patente per inviarla all'assicurazione ? Vi siete posti il problema di mettere fronte e retro sullo stesso foglio ? Lo so che c'è Gimp, ma non è banale, io ci metto 10 minuti per
1) ricordarmi come si fa
2) aprire la prima immagine
3) aumentare la dimensione superficie cliccando sulla catena per slegare x da y
4) aprire la seconda immagine come nuovo livello
5) con sposta metterla in posizione
6) salvare unendo i livelli
con i seguenti comandi è un attimo:
Per mettere due immagini una a fianco dell'altra:
Codice:
convert image1.jpg image2.jpg +append affianca.jpg
Per mettere due immagini una sotto l'altra:
Codice:
convert image1.jpg image2.jpg -append sovrapponi.jpg
questa è la versione grafica che permette la scelta delle 2 immagini
Codice:
#!/bin/bash
ima=`zenity --file-selection --multiple --title="Seleziona le due immagini"`
i=$?
# controlla se si è premuto OK o Annulla
if [ "$i" -ne 0 ]; then
# è stato premuto annulla o chiusa la finestra
zenity --warning --title="Attenzione" --text="Hai annullato"
exit 1
fi
#echo $ima
# separa i nomi dei due file utilizzando | come separatore
ima1="$(echo "$ima" | cut -d'|' -f1)"
ima2="$(echo "$ima" | cut -d'|' -f2)"
convert $ima1 $ima2 -append somma.jpg
Bello, quasi quasi prendo le stringhe del separatore per fissare i bordi delle miniature con cornice a seconda che la larghezza sia maggiore dell'altezza o il contrario.
Visto che siamo obbligati a due foto soltanto da affiancare, si potrebbe addirittura semplificare passando le foto direttamente dal
comando
Codice:
$ ./scriptpatel.sh foto1.jpg foto2.jpg
scriptpatel.sh
Codice:
#!/bin/bash
ima="$1|$2"
# separa i nomi dei due file utilizzando | come separatore
ima1="$(echo "$ima" | cut -d '|' -f1)"
ima2="$(echo "$ima" | cut -d '|' -f2)"
convert $ima1 $ima2 +append somma.jpg
in questo caso mi sembra inutile unire $1 e $2 per poi separarli, si fa prima con
Codice:
#!/bin/bash
convert $1 $2 +append somma.jpg
zafran, ho corretto i comandi per separare, awk è inutile, per errore ho corretto anche il tuo post
Naturalmente uno script di una riga non ha molto senso.
Ha senso il tuo che è grafico ma se uno si deve ricordare il nome dello script tanto vale si ricordi il comando.
Questa stringa la mettiamo nelle pillole.
Visto che sei a fare le cose per benino, tanto varrebbe mettere la possibilità di scelta del file risultante.
Codice:
save=`zenity --file-selection --save --confirm-overwrite --title="Salva il risultato" --filename="somma.jpg"`
E quindi
Codice:
#!/bin/bash
ima=`zenity --file-selection --multiple --title="Seleziona le due immagini"`
i=$?
# controlla se si è premuto OK o Annulla
if [ "$i" -ne 0 ]; then
# è stato premuto Annulla o chiusa la finestra
zenity --warning --title="Attenzione" --text="Hai annullato"
exit 1
else
save=`zenity --file-selection --save --confirm-overwrite --title="Salva il risultato" --filename="somma.jpg"`
e=$?
fi
if [ "$e" -ne 0 ]; then
# è stato premuto Annulla o chiusa la finestra
zenity --warning --title="Attenzione" --text="Non hai indicato alcun file!"
exit 1
fi
ima1="$(echo "$ima" | awk '{print $1}' | cut -d '|' -f1)"
ima2="$(echo "$ima" | awk '{print $1}' | cut -d '|' -f2)"
convert $ima1 $ima2 +append $save
mi sembra giusto, il prossimo passo è di non limitare a 2 immagini soltanto, ma a quelle che clicca l'utente.
In php sarebbe una sciocchezza, in bash mi sa che è un po' complicato.
Bisognerebbe anche selezionare il +o- del append.
Lasciando così, uno reitera e arriva alla somma che vuole.
Anzi dirò di piùì, mi pare sia la cosa che fa IrfanView, o almeno qualche versione fa era così.
Potevi scegliere la direzione della panoramica e la coppia di foto..
... buon lavoro ...

Non voglio fare concorrenza a a IrfanView, la mia intenzione è quella di imparare ancora qualcosa, mi hanno suggerito queste modifiche:
Codice:
#!/bin/bash
var=`zenity --file-selection --multiple --title="Seleziona le immagini da affiancare"`
# controlla se si è premuto OK o Annulla
if [ "$?" -ne 0 ]; then
# è stato premuto annulla o chiusa la finestra
zenity --warning --title="Attenzione" --text="Hai annullato"
exit 1
fi
# creo una nuova variabile contenente solo i "|" di var
num="${var//[^|]/}"
# li conto e ci aggiungo uno
num=$((${#num}+1))
if [ $num == 1 ]; then
zenity --warning --title="Attenzione" --text="Hai selezionato una sola immagine"
exit 1
fi
#il contatore
count=1
# finché il contatore è minore o uguale a num
while [ $count -le $num ] ; do
ima[$count]=`echo "$var" | cut -d'|' -f$count` # taglio con cut e metto nel array
((++count)) # incrementa il contatore
done
convert "${ima[@]}" -append somma.jpg
ma non ho capito la sintassi dei comandi
Codice:
num="${var//[^|]/}"
num=$((${#num}+1))
tu ne sai qualcosa ?