Tôi cố gắng tạo lại tập lệnh sử dụng lệnh ImageMagick "chuyển đổi" để soạn một hình ảnh. Nhưng tôi muốn làm điều tương tự trong PHP bằng Imagick (phiên bản 6.6.2-10).Imagick: soạn với mặt nạ
Các lệnh này như sau:
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
tôi phát hiện ra rằng các tham số đứng sau:
convert {background} {overlay} [{mask}] [-compose {method}] -composite {result}
Các PHP Imagick mang lại cho tôi một phương pháp soạn, nhưng không có một tham số mặt nạ: http://www.php.net/manual/en/imagick.compositeimage.php
Tôi đã tìm thấy another question và thử điều này (nhưng không dẫn đến cùng một hình ảnh):
// 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);
Vì vậy, câu hỏi của tôi là: đây có phải là cách thích hợp để tạo hình ảnh bằng mặt nạ không? Hay có gì sai ở đây?
Để giúp hình dung những gì tôi muốn làm, sau đây là một số hình ảnh đầu vào:
hình ảnh đầu vào a1 (nền):
hình ảnh đầu vào a3 (overlay):
hình ảnh đầu vào a4 (mặt nạ):
Những gì tôi muốn kết quả là:
gì mã php của tôi tạo ra:
Cảm ơn trước! Michael
tại sao bạn không sử dụng cờ COMPOSITE_OVERLAY – artragis