Question

J'ai eu du mal à générer une image avec l'extension Imagick PHP. Tout fonctionne bien, sauf que mon "Montage" suivant a un fond blanc et donc je ne peux donc pas le superposer au-dessus d'autre chose. Comment puis-je générer un montage avec un fond transparent?

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

Merci!!

Était-ce utile?

La solution

J'ai eu le même problème et j'ai découvert que l'API M MagickWand, qui alimente l'imagick), ne prend pas en charge l'option de montage.

J'ai fini par le manquer manuellement comme ceci:

// 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++);
}

Autres conseils

Je sais que c'est une vieille question, mais j'ai trouvé une autre façon de le faire en utilisant la fonction MontageImage d'Imagrick. Après avoir créé votre objet Imagick, vous devez déclarer l'arrière-plan comme transparent comme ceci:

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

Une fois que cela est défini, vous pouvez exécuter l'objet via MontageImage qui créera un montageImage avec un arrière-plan transparent:

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

Ensuite, vous pouvez ajouter la nouvelle image de montage à votre image composite en vous assurant d'utiliser le composite composite Imagrick prédéfini composite_atop ou votre (s) constante (s) souhaitée comme celle-ci:

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

Je viens de courir sur cette question et a décidé de publier une autre solution au cas où quelqu'un d'autre voudrait un autre moyen de le faire sans boucle manuelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top