Imagemagik и php imagecopy не сохраняют прозрачность - PullRequest
1 голос
/ 28 марта 2012

У меня странная проблема, когда я использую imagemagik преобразованное изображение с php imagecopy .. Вот мой код

$cmd = "convert ".realpath($temp1)." -alpha set -channel alpha -background none -vignette 0x3 ".$dest_img;
exec($cmd);

Этот код делает края закрашенными, так что я могу получить чистое слияние .. Вот мойкод для объединения изображений

    $image = imagecreatefromjpeg($postcard_img);
    $frame = imagecreatefrompng($thumb_img);

    list($w, $h) = getimagesize($postcard_img);
    imagealphablending($frame,true);

    //imagecopymerge($image, $frame, $coords[0], $coords[1], 0, 0, $w, $h, 100);
    imagecopy($image, $frame, $coords[0], $coords[1], 0, 0, $w, $h);

И вот результат

enter image description here

Хорошо, теперь странные вещи .. ЕСЛИ я не использую ImageMagik и просто объединяюэто, заменяя imagecopy () на imagecopymerge (), тогда он работает, но оставляет неровные края. Вот код imagecopymerge ()

    $postcard_img = $postcard[0]["ms_filepath"].$postcard[0]["ms_filename"];
    $thumb_img = $thumb[0]["ms_thumbpath"].$thumb[0]["ms_thumbname"];

    $image = imagecreatefromjpeg($postcard_img);
    $frame = imagecreatefrompng($thumb_img);

    list($w, $h) = getimagesize($postcard_img);
    imagealphablending($frame,true);

    imagecopymerge($image, $frame, $coords[0], $coords[1], 0, 0, $w, $h, 100);

И вот результат (см. неровные края)

enter image description here

Все, что мне нужно, это пернатый образ ... Любая идея, почему это происходит и как его преодолеть?

1 Ответ

1 голос
/ 29 марта 2012

Нет. Сопротивление бесполезно.

convert ( frame.png -channel alpha -blur 0x5 -level 50%,100% ) ( avatar.jpg -geometry +70+120 ) -compose dstover -composite output.png

enter image description here

В Photoshop (или аналогичном) вы всегда можете создать рамку с заштрихованными краями и просто поместить один поверх другого.

...