Provo a ricreare uno script che usa il comando ImageMagick "convert" per comporre un'immagine. Ma voglio fare lo stesso in PHP usando Imagick (versione 6.6.2-10).Imagick: componi con maschera
Il comando è la seguente:
convert A1.mpc A3.mpc A4.mpc -channel rgba -alpha on -virtual-pixel background -background none -define compose:args=312x26.6776 -compose displace -composite out.mpc
ho scoperto che i parametri rappresentano le seguenti:
convert {background} {overlay} [{mask}] [-compose {method}] -composite {result}
Il PHP Imagick mi dà un metodo di composizione, ma senza un parametro della maschera: http://www.php.net/manual/en/imagick.compositeimage.php
Ho trovato another question e ci prova (ma non risulta nella stessa immagine):
// load images
$a1 = new Imagick('a1.png');
$a3 = new Imagick('a3.png');
$a4 = new Imagick('a4.png');
// mask the overlay
$a1->compositeImage($a4, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);
// compose overlay to background
$a1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
$a1->setImageBackgroundColor(new ImagickPixel('none'));
$a1->setOption('compose:args', '312x26.6776');
$a1->compositeImage($a3, Imagick::COMPOSITE_DISPLACE, 0, 0);
Quindi la mia domanda è: è questo il modo giusto per comporre un'immagine usando una maschera? O cosa c'è che non va qui?
Per aiutare a visualizzare quello che voglio fare, ecco alcune immagini in ingresso:
immagine in ingresso A1 (sfondo):
immagine in ingresso a3 (overlay):
ingresso immagine a4 (maschera):
Quello che voglio che il risultato sia:
Ciò che il mio codice PHP crea:
Grazie in anticipo! Michael
perché non si utilizza il flag COMPOSITE_OVERLAY – artragis