Imagick PHP Uzatma -

2 Cevap php

Ben Imagick PHP uzantısı ile bir görüntü üreten bazı sorun yaşıyorum. Her şey benim şu "montaj" beyaz bir arka plan vardır dışında, çalışıyor ve bu nedenle ben başka bir şey üstüne bindirme olamaz. Nasıl şeffaf arka plan ile bir montaj üretebilir?

       $Montage = $Icons->montageImage(new imagickdraw(), "3x2+0+0", "34x34+3+3", imagick::MONTAGEMODE_UNFRAME, "0x0+0+0");
      $Canvas->compositeImage($Montage, $Montage->getImageCompose(), 5, 5);

Teşekkürler!

2 Cevap

Ben aynı sorunu vardı ve yetkileri imagick MagickWand C API), montaj için seçeneği desteklemiyorsa keşfetti.

Bu gibi elle montaging sona erdi:

// Add them to an array of Imagick objects, instead of using addImage().
$images = new Array();

// Make a transparent canvas.
$target = new Imagick();
$target->newImage($width, $height * count(images), 'none');

$i = 0;
foreach ($images as $image) {
    $target->compositeImage($image, imagick::COMPOSITE_COPY, 0, $height * $i++);
}

Bu eski bir soru olduğunu biliyorum ama ben Imagick'teki en montageImage işlevini kullanarak bunu yapmak için başka bir yol buldu. Eğer Imagick nesnesi oluşturduktan sonra bu gibi arka plan saydam olarak bildirmeniz gerekir:

$Icons->setBackgroundColor( new ImagickPixel('transparent') );

Bu ayarlandıktan sonra, bir şeffaf arka plan ile bir montageImage yaratacak montageImage aracılığıyla nesne çalıştırabilirsiniz:

$Montage = $Icons->montageImage(new imagickdraw(), "3x2+0+0", "34x34+3+3", imagick::MONTAGEMODE_UNFRAME, "0x0+0+0");

Sonra bu gibi önceden tanımlanmış Imagick kompozit sürekli COMPOSITE_ATOP veya istediğiniz sabit (ler) kullanmak için emin kompozit görüntü için yeni montaj resim ekleyebilirsiniz:

$Canvas->compositeImage($Montage, imagick::COMPOSITE_ATOP, 5, 5);

Sadece bu soruya karşılaştım ve başkasının manuel döngü olmadan bunu yapmak için başka bir yol istediği durumunda başka bir çözüm sonrası karar verdi.