[Risolto] sovrapporre immagini con imagemagick
- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
[Risolto] sovrapporre immagini con imagemagick
Ciao a tutti,
per un lavoro che dovrei fare, ho la necessità di effettuare piu volte un'operazione che potrei fare tranquillamente con gimp ma che mi porterebbe via troppo tempo.
Si tratta di unire due file, una cornice (che andrebbe applicata a piu immagini).
La cornice è questa al centro cella cornice andrebbero inserite diverse immagini come per esempio questa
Se riesco a ricavare il comando giusto per poter effettuare questa operazione con imagemagick, potrei fare un piccolo script e risparmiare un sacco di tempo.
Qualcuno puo darmi una mano?
Ringrazio anticipatamente per l'attenzione.
per un lavoro che dovrei fare, ho la necessità di effettuare piu volte un'operazione che potrei fare tranquillamente con gimp ma che mi porterebbe via troppo tempo.
Si tratta di unire due file, una cornice (che andrebbe applicata a piu immagini).
La cornice è questa al centro cella cornice andrebbero inserite diverse immagini come per esempio questa
Se riesco a ricavare il comando giusto per poter effettuare questa operazione con imagemagick, potrei fare un piccolo script e risparmiare un sacco di tempo.
Qualcuno puo darmi una mano?
Ringrazio anticipatamente per l'attenzione.
Ultima modifica di rodolforizzo76 il mercoledì 18 febbraio 2015, 19:05, modificato 2 volte in totale.
Legge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
-
1001001
- Entusiasta Emergente

- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: sovrapporre immagini con imagemagick
Ciao! Dovresti cavartela facilmente con composite, soprattutto se le immagini vanno messe tutte nello stesso posto rispetto alla cornice: http://www.imagemagick.org/script/composite.php
"I find your lack of faith disturbing."
- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
credo che il comando indicato nel link che mi hai gentilmente indicato non sia corretto, forse un errore di trascrizione fatto sta che:
non va, ovviamente ho cambiato i nomi dei file adattandoli ai mie. Credo che dipenda da "rose:"
Codice: Seleziona tutto
composite -gravity center smile.gif rose: rose-over.pngLegge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
-
rai
- Imperturbabile Insigne

- Messaggi: 2926
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: sovrapporre immagini con imagemagick
Ciao, in effetti i due punti non c'entrano
Se le immagini da incorniciare sono tutte del tipo e delle dimensioni che hai postato e se sono tutte nella stessa CARTELLA dovrebbe bastare uno script di questo tipo:
Se le immagini da incorniciare sono tutte del tipo e delle dimensioni che hai postato e se sono tutte nella stessa CARTELLA dovrebbe bastare uno script di questo tipo:
Codice: Seleziona tutto
#!/bin/bash
cd /PERCORSO/DI/CARTELLA
for f in $(ls *.jpg )
do
composite -gravity center $f /percorso/della/cornice ${f/.jpg}-Framed.png
done- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
si, così funziona, diciamo che la misura delle immagini dovrebbe variare in base al tipo di cornice, e le cornici sono 6 o 7 tipi o forse di più, sarebbe utile forse creare tutte le varianti ogni volta che si processa un'immagine. Vedo cosa riesco a fare.
Legge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4467
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 24.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
Per curiosità ho fatto uno script per incorniciare formati diversi con le relative cornici.
Visto che le cornici da utilizzare sono poche, userei una struttura apposita in modo da non complicare lo script.
I presupposti sono:
1) che i nomi dei file delle cornici non contengano spazi e abbiano nome progressivo ('xxx-1', 'xxx-2' ... xxx-N ... o anche 'xxx-a', 'xxx-b', 'xxx-c' ...'xxx-z')
2) le directory contenenti le immagini da incorniciare abbiano un nome del tipo imgN dove "N" è un intero che rispetti la progressione dei nomi delle cornici.
(i nomi delle immagini da incorniciare non devono rispettare regole particolari e possono contenere spazi (while + read), le ho numerate solo perché è più veloce a farsi).
Per esempio la struttura iniziale che ho creato è questa:
ho fatto copie delle immagini originali in ./img1 in ./img2 e ./img3
con mogrify ho ridotto le immagini proporzionalmente (in percentuale):
cornice-2.png (rid %) come le immagini in ./img2
cornice-3.png (rid %) come le immagini in ./img3
lo script è semplicissimo (ci vuole di più a descriverlo che a scriverlo):
Con queste impostazioni le immagini risultanti saranno salvate nella directory "incorniciate"
la struttura finale sarà:
Visto che le cornici da utilizzare sono poche, userei una struttura apposita in modo da non complicare lo script.
I presupposti sono:
1) che i nomi dei file delle cornici non contengano spazi e abbiano nome progressivo ('xxx-1', 'xxx-2' ... xxx-N ... o anche 'xxx-a', 'xxx-b', 'xxx-c' ...'xxx-z')
2) le directory contenenti le immagini da incorniciare abbiano un nome del tipo imgN dove "N" è un intero che rispetti la progressione dei nomi delle cornici.
(i nomi delle immagini da incorniciare non devono rispettare regole particolari e possono contenere spazi (while + read), le ho numerate solo perché è più veloce a farsi).
Per esempio la struttura iniziale che ho creato è questa:
Codice: Seleziona tutto
8-) tree
.
├── cornici
│ ├── cornice-1.png
│ ├── cornice-2.png
│ └── cornice-3.png
├── img1
│ ├── van-gogh 0.jpg
│ ├── van-gogh 1.jpg
│ ├── van-gogh 2.jpg
│ └── van-gogh 3.jpg
├── img2
│ ├── van-gogh 0.jpg
│ ├── van-gogh 1.jpg
│ ├── van-gogh 2.jpg
│ └── van-gogh 3.jpg
├── img3
│ ├── van-gogh 0.jpg
│ ├── van-gogh 1.jpg
│ ├── van-gogh 2.jpg
│ └── van-gogh 3.jpg
└── script.sh
con mogrify ho ridotto le immagini proporzionalmente (in percentuale):
cornice-2.png (rid %) come le immagini in ./img2
cornice-3.png (rid %) come le immagini in ./img3
lo script è semplicissimo (ci vuole di più a descriverlo che a scriverlo):
Codice: Seleziona tutto
#!/bin/bash
dir_cornici='cornici'
dir_out='incorniciate'
i=1
for cornice in $(ls "$dir_cornici/"*.png);do
[ -d "$dir_out/img$i" ] || mkdir -p "$dir_out/img$i"
while read f
do
composite -gravity center "$f" "$cornice" "$dir_out/${f/.jpg}-Framed.jpg"
done < <(ls -1 "img$i/"*.jpg)
(( i++ ))
donela struttura finale sarà:
Codice: Seleziona tutto
8-) tree
.
├── cornici
│ ├── cornice-1.png
│ ├── cornice-2.png
│ └── cornice-3.png
├── img1
│ ├── van-gogh 0.jpg
│ ├── van-gogh 1.jpg
│ ├── van-gogh 2.jpg
│ └── van-gogh 3.jpg
├── img2
│ ├── van-gogh 0.jpg
│ ├── van-gogh 1.jpg
│ ├── van-gogh 2.jpg
│ └── van-gogh 3.jpg
├── img3
│ ├── van-gogh 0.jpg
│ ├── van-gogh 1.jpg
│ ├── van-gogh 2.jpg
│ └── van-gogh 3.jpg
├── incorniciate
│ ├── img1
│ │ ├── van-gogh 0-Framed.jpg
│ │ ├── van-gogh 1-Framed.jpg
│ │ ├── van-gogh 2-Framed.jpg
│ │ └── van-gogh 3-Framed.jpg
│ ├── img2
│ │ ├── van-gogh 0-Framed.jpg
│ │ ├── van-gogh 1-Framed.jpg
│ │ ├── van-gogh 2-Framed.jpg
│ │ └── van-gogh 3-Framed.jpg
│ └── img3
│ ├── van-gogh 0-Framed.jpg
│ ├── van-gogh 1-Framed.jpg
│ ├── van-gogh 2-Framed.jpg
│ └── van-gogh 3-Framed.jpg
└── script.shSalva l'Ucraina! 
- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
ciao @UbuNuovo
Grazie per il tuo intervento, adesso provo a fare qualche esperimento prendendo spunto da quanto hai scritto. Il problema che mi riesce difficile da affrontare è questo, lo spazio che deve occupare l'immagine all'interno delle varie cornici, non è sempre uguale, cambia a seconda del tipo di cornice. In linea di massima le dimensioni dell'immagine per le cornici verticali si aggirano intorno 453x610 px ma ci sono anche 404x546 px oppure 402x544 px, a questo punto mi chiedo come funziona il ridimensionamento fatto con mogrify. Andrebbe bene anche se l'immagine ottenuta dal ridimensionamento (per stare esattamente dentro la cornice) se non è precisa venga ritagliata, oppure la parte in eccesso venga coperta dalla cornice, però dovrebbe essere una parte minima dell'immagine (che deve comunque mantenere le proporzioni).
Cosa ne pensi?
Grazie per il tuo intervento, adesso provo a fare qualche esperimento prendendo spunto da quanto hai scritto. Il problema che mi riesce difficile da affrontare è questo, lo spazio che deve occupare l'immagine all'interno delle varie cornici, non è sempre uguale, cambia a seconda del tipo di cornice. In linea di massima le dimensioni dell'immagine per le cornici verticali si aggirano intorno 453x610 px ma ci sono anche 404x546 px oppure 402x544 px, a questo punto mi chiedo come funziona il ridimensionamento fatto con mogrify. Andrebbe bene anche se l'immagine ottenuta dal ridimensionamento (per stare esattamente dentro la cornice) se non è precisa venga ritagliata, oppure la parte in eccesso venga coperta dalla cornice, però dovrebbe essere una parte minima dell'immagine (che deve comunque mantenere le proporzioni).
Cosa ne pensi?
Legge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4467
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 24.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
Io credevo che tu avessi già pronte le cornici adatte ai vari formati di immagine, per questo avevo fatto in modo di usare le cornici-1 sulle immagini img1, cornice-2 su img2 e così via.
Ora se i formati sono solo quelli citati ti bastano due cornici, una per le immagini verticali (quelle 453x610px) e una per i formati orizzontali, simili, (404x546 e 402x544 px).
Per i formati orizzontali la differenza è piccolissima quindi non starei a ridimensionarle basta fare una cornice che si adatti bene ai lati più corti di entrambi i formati quindi la cornice deve avere il rettangolo trasparente di 402x544px.
In questo modo la parte non trasparente della cornice copre 1 px per ogni lato dei formati 404x546, una quantità trascurabile.
Riassumendo!
Crei una cornice che si adatti alle immagini verticali, che abbia l'area trasparente di 453x610px e la chiami, per esempio, cornice-1.png e la salvi nella directory "cornici".
Le immagini verticali 453x610px le inserisci nella directory 'img1'
Crei una cornice che si adatti alle immagini orizzontali, che abbia l'area trasparente di 402x544px e la chiami, per esempio, cornice-2.png e la salvi nella directory "cornici".
Le immagini orizzontali 404x546 e 402x544 px le inserisci nella directory 'img2'
A questo punto puoi usare lo script così com'è, dalla directory contenente le directory: 'cornici', 'img1' e 'img2'.
Nel caso le variazioni di formato fossero più ampie le ridimensionerei tutte per rientrare nelle due cornici già fatte.
Non so come le utilizzerai ma in genere è bene avere dimensioni uniformi.
Ora se i formati sono solo quelli citati ti bastano due cornici, una per le immagini verticali (quelle 453x610px) e una per i formati orizzontali, simili, (404x546 e 402x544 px).
Per i formati orizzontali la differenza è piccolissima quindi non starei a ridimensionarle basta fare una cornice che si adatti bene ai lati più corti di entrambi i formati quindi la cornice deve avere il rettangolo trasparente di 402x544px.
In questo modo la parte non trasparente della cornice copre 1 px per ogni lato dei formati 404x546, una quantità trascurabile.
Riassumendo!
Crei una cornice che si adatti alle immagini verticali, che abbia l'area trasparente di 453x610px e la chiami, per esempio, cornice-1.png e la salvi nella directory "cornici".
Le immagini verticali 453x610px le inserisci nella directory 'img1'
Crei una cornice che si adatti alle immagini orizzontali, che abbia l'area trasparente di 402x544px e la chiami, per esempio, cornice-2.png e la salvi nella directory "cornici".
Le immagini orizzontali 404x546 e 402x544 px le inserisci nella directory 'img2'
A questo punto puoi usare lo script così com'è, dalla directory contenente le directory: 'cornici', 'img1' e 'img2'.
Nel caso le variazioni di formato fossero più ampie le ridimensionerei tutte per rientrare nelle due cornici già fatte.
Non so come le utilizzerai ma in genere è bene avere dimensioni uniformi.
Salva l'Ucraina! 
- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
ho provato lo script, l'ho provato con solo due tipi di cornici ed ha funzionato bene. Tuttavia vorrei qualcosa di diverso, l'ideale per me sarebbe avere due script, uno per le immagini verticali e uno per le immagini orizzontali, che prendano come argomento il file da elaborare
per esempio con un comando tipo:
che processa il file passato come argomento e crei tutte le varianti (le immagini con applicate le diverse cornici). Il file passato come argomento avrà sempre la stessa risoluzione e lo script dovrebbe occuparsi di ridimensionarlo in base al rettangolo trasparente di ogni cornice.
Avendo a disposizione tutte le dimensioni esatte dei rettangoli trasparenti all'interno della cornice la cosa è fattibile? I file generati dallo script finiranno nella stessa directory del file di partenza.
Questo è quello che vorrei, e la prima domanda che mi viene in mente è: come si passa un file allo script come argomento? (Lo sapevo ma ho la memoria un po a breve termine : ))
Se hai voglia e tempo per darmi una mano ti ringrazio!!
per esempio con un comando tipo:
Codice: Seleziona tutto
cornice_verticale.sh nome_file.jpg
che processa il file passato come argomento e crei tutte le varianti (le immagini con applicate le diverse cornici). Il file passato come argomento avrà sempre la stessa risoluzione e lo script dovrebbe occuparsi di ridimensionarlo in base al rettangolo trasparente di ogni cornice.
Avendo a disposizione tutte le dimensioni esatte dei rettangoli trasparenti all'interno della cornice la cosa è fattibile? I file generati dallo script finiranno nella stessa directory del file di partenza.
Questo è quello che vorrei, e la prima domanda che mi viene in mente è: come si passa un file allo script come argomento? (Lo sapevo ma ho la memoria un po a breve termine : ))
Se hai voglia e tempo per darmi una mano ti ringrazio!!
Legge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4467
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 24.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
Allora non ho capite bene cosa vuoi fare dovresti spiegare meglio la situazione reale.
Passare un argomento si fa come hai fatto te:
i valori degli argomenti li ritrovi in $N dove N è un intero
eseguendo lo script:
$0 conterrà il nome dello script in questo caso 'nome_script.sh' (o './nome_script.sh' dipende da come si richiama lo script)
$1 conterrà il primo argomento in questo caso 'argomento_1'
$2 conterrà il secondo argomento in questo caso 'argomento_2'
e così via.
Passare un argomento si fa come hai fatto te:
Codice: Seleziona tutto
nome_script.sh argomento_1 argomento_2 argomento_3 ...eseguendo lo script:
$0 conterrà il nome dello script in questo caso 'nome_script.sh' (o './nome_script.sh' dipende da come si richiama lo script)
$1 conterrà il primo argomento in questo caso 'argomento_1'
$2 conterrà il secondo argomento in questo caso 'argomento_2'
e così via.
Salva l'Ucraina! 
- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
La situazione reale è questa, con ogni probabilità dovro fare un sito e-commerce (si lo so che stai già ridendo!) per un tale che vende stampe con la possibilità di abbinarle a qualche tipo di cornice (10 tipi, 3 di legno e 7 di alluminio di diversi colori). Quando sarà il momento di caricare le immagini dei prodotti avrò un file per ogni stampa in vendita e dovrò preparare le varianti del prodotto che consistono nell'immagine del prodotto con applicate le varie cornici.
L'inserimento dei prodotti è già di per se una cosa noiosa e porta via tempo anche senza le immagini (considera che il sito penso di farglielo con wordpress + woocommerce). Per questo lo script mi verrebbe in aiuto, carico l'immagine del prodotto senza cornice (che avrà un prezzo) poi prendo l'immagine la do in pasto allo script che mi crera le varianti con le cornici, in modo da inserire poi i vari prezzi delle varianti, la disponibilità di magazzino le misure etc.. e infine carico le immagini delle varie varianti del prodotto (varie varianti... ; ) comodamente preparate dallo script risparmiando un sacco di tempo.
L'inserimento dei prodotti è già di per se una cosa noiosa e porta via tempo anche senza le immagini (considera che il sito penso di farglielo con wordpress + woocommerce). Per questo lo script mi verrebbe in aiuto, carico l'immagine del prodotto senza cornice (che avrà un prezzo) poi prendo l'immagine la do in pasto allo script che mi crera le varianti con le cornici, in modo da inserire poi i vari prezzi delle varianti, la disponibilità di magazzino le misure etc.. e infine carico le immagini delle varie varianti del prodotto (varie varianti... ; ) comodamente preparate dallo script risparmiando un sacco di tempo.
Legge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
una cosa tipo:
prendo il file originale
lo ridimensiono adattandolo alla misura interna della cornice in legno
gli applico la cornice in legno
rielaboro il file orioginale
lo ridimensiono per la cornice di alluminio rossa
gli applico la cornice in alluminio rosso
e cosi via fino alla fine,
il tutto tradotto in uno script...
prendo il file originale
lo ridimensiono adattandolo alla misura interna della cornice in legno
gli applico la cornice in legno
rielaboro il file orioginale
lo ridimensiono per la cornice di alluminio rossa
gli applico la cornice in alluminio rosso
e cosi via fino alla fine,
il tutto tradotto in uno script...
Legge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4467
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 24.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
Forse ho capito. Mi ero già fatto uno script che data un immagine crea altre copie in risoluzioni diverse, probabilmente basta aggiungere il comando composite.
Dopo cena gli butto un occhio.
Considera anche che altezza e larghezza delle immagini si possono ricavare con identify di imagemagick e si potrebbe adattare un solo script per le varie esigenze.
Dopo cena gli butto un occhio.
Considera anche che altezza e larghezza delle immagini si possono ricavare con identify di imagemagick e si potrebbe adattare un solo script per le varie esigenze.
Salva l'Ucraina! 
- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
sto facendo qualche esperimento e credo che si può fare, resta da vedere la parte riguardante il ridimensionamento come si comporterà. In ogni caso le misure dei vari rettangoli trasparenti per le immagini verticali sono:
cornice noce 404x546 px
cornice ciliegio 402x544 px
cornici alluminio colorate sono tutte e 7 a 453x610 px
se vuoi fare delle prove qui ci sono tre cornici
cornice noce 404x546 px
cornice ciliegio 402x544 px
cornici alluminio colorate sono tutte e 7 a 453x610 px
se vuoi fare delle prove qui ci sono tre cornici
Legge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4467
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 24.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
Il mio vecchio script fa anche bonifica dei nomi di file, creazione e spostamento in directory, ritaglio riempimento dello sfondo per immagini che non rispettano le giuste proprzioni etc, un sacco di codice che non ti serve.
Ho visto che le tre cornici proposte sono sempre la stessa ridimensionata in tre formati, allora non capisco... in questo caso converrebbe fare il composite con l'immagine grande e poi ridimensionare l'immagine risultante nei tre formati.
Ti faccio vedere una parte di codice per il ridimensionamento, quello per il composite lo conosci.
Potrebbe ispirarti, ora non posso starci dietro, se hai problemi domani sera posso rimetterci le mani.
in $i c'è il nome del file
-geometry xPIXEL e -geometry PIXELx Indicano i metodi di ridimensionamento in base ad altezza e in base alla larghezza
-quality 80 è la percentuale di compressione jpg
dopo c'è $i che è il nome dell'immagine
alla fine c'è il percorso di salvataggio e nome del file
ti potrebbe essere utile recuperare larghezza o altezza
per esempio:
per le altezze
per le larghezze
non credo che serva altro. Il ciclo lo farai, credo su una lista di risoluzioni.
Ho visto che le tre cornici proposte sono sempre la stessa ridimensionata in tre formati, allora non capisco... in questo caso converrebbe fare il composite con l'immagine grande e poi ridimensionare l'immagine risultante nei tre formati.
Ti faccio vedere una parte di codice per il ridimensionamento, quello per il composite lo conosci.
Potrebbe ispirarti, ora non posso starci dietro, se hai problemi domani sera posso rimetterci le mani.
Codice: Seleziona tutto
for i in *.jpg; do
if (CONDIZIONE) # esempio di if non ho messo la mia perché dipende da altre variabili
then
convert -geometry x600 -quality 80 $i ./160_600/G_$i;
convert -geometry 100x -quality 80 $i ./160_600/$i;
else
convert -geometry 100x -quality 80 $i ./160_600/$i;
convert -geometry x600 -quality 80 $i ./600/$i;
convert -geometry x480 -quality 80 $i ./480/$i;
convert -geometry x198 -quality 80 $i ./198/$i;
convert -geometry x100 -quality 80 $i ./100/$i;
fi
donein $i c'è il nome del file
-geometry xPIXEL e -geometry PIXELx Indicano i metodi di ridimensionamento in base ad altezza e in base alla larghezza
-quality 80 è la percentuale di compressione jpg
dopo c'è $i che è il nome dell'immagine
alla fine c'è il percorso di salvataggio e nome del file
ti potrebbe essere utile recuperare larghezza o altezza
per esempio:
per le altezze
Codice: Seleziona tutto
find . -type f -iname '*.jpg' -exec identify {} \; | grep -Po 'x\K[0-9]+'Codice: Seleziona tutto
find . -type f -iname '*.jpg' -exec identify {} \; | grep -Po '[0-9]+(?=x)'Salva l'Ucraina! 
- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
Grazie, adesso guardo bene tutto, vedo se riesco a ottenere quello che voglio e poi ti faccio sapere. Se domani sera se c'è ancora qualcosa che non va, vediamo.
Grazie per l'aiuto!
Buona serata.
Grazie per l'aiuto!
Buona serata.
Legge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4467
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 24.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
Spero che tu abbia risolto! Ho fatto ora questo orrido script! Come emergenza funge ma andrebbero messi un po di controlli e semmai fare un ciclo nel ciclo per non stare a scrivere tutto.
Per provare ho fatto anche una cornice mogano e le varie cornici di alluminio mancanti in modo da averne 3 in legno e 7 in alluminio.
la struttura iniziale è
lo script si esegue con:
questo è lo script (molto brutto e grezzo ma comprensibile! Si potrebbe fare un ciclo sui vari colori/tipi e fare l'if su questi)
eseguito lo script la struttura finale diventa:
Per provare ho fatto anche una cornice mogano e le varie cornici di alluminio mancanti in modo da averne 3 in legno e 7 in alluminio.
la struttura iniziale è
Codice: Seleziona tutto
8-) tree
.
├── cornice_verticale.sh
├── cornici_verticali
│ ├── piatta_ciliegio_640x498.png
│ ├── piatta_mogano_640x498.png
│ ├── piatta_noce_640x498.png
│ ├── star_arancio_482x640.png
│ ├── star_blu_482x640.png
│ ├── star_celeste_482x640.png
│ ├── star_fucsia_482x640.png
│ ├── star_nero_482x640.png
│ ├── star_rosso_482x640.png
│ └── star_verde_482x640.png
└── nome_img.jpgCodice: Seleziona tutto
./cornice_verticale.sh nome_img.jpgCodice: Seleziona tutto
#!/bin/bash
dir_cornici='cornici_verticali'
risoluzioni='404x546 402x544 402x544 453x610' # risoluzioni area trasparente in ordine alfabetico: ciliegio, mogano, noce, star
dir_out=$(pwd)
img_orig="$1"
i=1
mkdir ./temp
for r in $risoluzioni
do
convert -geometry $r^ -quality 80 $img_orig ./temp/img_orig$r.jpg;
if [ $i -eq 1 ];then
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/piatta_ciliegio_640x498.png" "$dir_out/${img_orig/.jpg}-ciliegio.jpg"
elif [ $i -eq 2 ];then
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/piatta_mogano_640x498.png" "$dir_out/${img_orig/.jpg}-mogano.jpg"
elif [ $i -eq 3 ];then
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/piatta_noce_640x498.png" "$dir_out/${img_orig/.jpg}-noce.jpg"
else
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/star_arancio_482x640.png" "$dir_out/${img_orig/.jpg}-arancio.jpg"
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/star_blu_482x640.png" "$dir_out/${img_orig/.jpg}-blu.jpg"
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/star_celeste_482x640.png" "$dir_out/${img_orig/.jpg}-celeste.jpg"
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/star_fucsia_482x640.png" "$dir_out/${img_orig/.jpg}-fucsia.jpg"
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/star_nero_482x640.png" "$dir_out/${img_orig/.jpg}-nero.jpg"
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/star_rosso_482x640.png" "$dir_out/${img_orig/.jpg}-rosso.jpg"
composite -gravity center "./temp/img_orig$r.jpg" "$dir_cornici/star_verde_482x640.png" "$dir_out/${img_orig/.jpg}-verde.jpg"
fi
(( i++ ))
done
rm -rf ./temp
exitCodice: Seleziona tutto
8-) tree
.
├── cornice_verticale.sh
├── cornici_verticali
│ ├── piatta_ciliegio_640x498.png
│ ├── piatta_mogano_640x498.png
│ ├── piatta_noce_640x498.png
│ ├── star_arancio_482x640.png
│ ├── star_blu_482x640.png
│ ├── star_celeste_482x640.png
│ ├── star_fucsia_482x640.png
│ ├── star_nero_482x640.png
│ ├── star_rosso_482x640.png
│ └── star_verde_482x640.png
├── nome_img-arancio.jpg
├── nome_img-blu.jpg
├── nome_img-celeste.jpg
├── nome_img-ciliegio.jpg
├── nome_img-fucsia.jpg
├── nome_img.jpg
├── nome_img-mogano.jpg
├── nome_img-nero.jpg
├── nome_img-noce.jpg
├── nome_img-rosso.jpg
└── nome_img-verde.jpgSalva l'Ucraina! 
- rodolforizzo76
- Scoppiettante Seguace

- Messaggi: 619
- Iscrizione: sabato 19 gennaio 2008, 17:13
- Desktop: plasma
- Distribuzione: Kubuntu 20.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
Grazie, avevo fatto anche io qualcosa e quello che ho messo insieme funziona, ma solo se l'immagine iniziale ha determinate misure. Adesso provo lo script che hai (gentilmente) scritto tu.
Ti faccio sapere.
Ti faccio sapere.
Legge dell'Individuo: Nessuno e' veramente interessato o capisce quel che sta facendo chiunque altro.
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4467
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 24.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: sovrapporre immagini con imagemagick
Il rapporto tra altezza e larghezza non può variare troppo (tra le varie immagini), specialmente per le cornici sottili.
Altrimenti potresti aggiungere il crop.
Guarda questa pagina
Altrimenti potresti aggiungere il crop.
Guarda questa pagina
Salva l'Ucraina! 
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 1 ospite