2011-01-26 13 views
12

C'è un modo per ridimensionare automaticamente l'immagine di sovrapposizione in base alle dimensioni dello sfondo quando si sovrappongono le immagini utilizzando ImageMagick? Sto usando il seguente codice ora:Sovrapposizione di due immagini con ridimensionamento automatico utilizzando ImageMagick

composito overlay.jpeg background.jpeg result.jpeg

Il problema è che a volte sovrappongo e lo sfondo sono di dimensioni diverse, e mi piacerebbe ridimensionare sovrapponi di conseguenza (mantenendo le proporzioni) e posizionalo al centro. C'è un modo per farlo?

risposta

24

Prima di tutto, la sovrapposizione e lo sfondo non devono necessariamente avere le stesse dimensioni per il composito. Ad esempio, in queste due immagini:

sydney.png (352x288):

sydney

jet2.png (128x129):

jet2

prova i seguenti comandi:

convert -size 352x288 -composite sydney.png jet2.png -geometry 64x64+176+144 -depth 8 test.png 

convert -size 352x288 -composite sydney.png jet2.png -geometry 32x32+176+144 -depth 8 test.png 
  • -size specifica le dimensioni dell'immagine di uscita
  • -geometry specifica le dimensioni e la posizione del primo piano

Questo è ciò che ho per il primo comando:

result

EDIT

Ecco uno script di bash per fare tutto per si in una sola riga:

#!/bin/bash 
if [ -z "$3" ] 
then 
    echo "usage: $0 background.png foreground.png output.png" 
    exit 1 
fi 
bg_size=`identify -format '%wx%h' "$1"` 
convert -size $bg_size -composite "$1" "$2" -geometry $bg_size+0+0 -depth 8 "$3" 
+0

Il problema è che ho bisogno le dimensioni per abbinare .. –

+0

Quindi specificare lo stesso dimensioni per i 'interruttori -geometry' -size' e'. Ad esempio: convert-size 352x288 -composite sydney.png jet2.png -geometry 352x288 + 0 + 0 -depth 8 test.png' allungherà l'aeroplano per adattarsi alla finestra dell'immagine. – misha

+0

Bene - questo potrebbe funzionare ma non conosco le dimensioni dell'immagine in anticipo quindi sarebbe bello se potesse auto-allungarsi o qualsiasi altra cosa. –

Problemi correlati