Frage

Ich hatte Probleme, ein Bild mit der Imageick -PHP -Erweiterung zu generieren. Alles funktioniert gut, außer dass meine folgende "Montage" einen weißen Hintergrund hat und ich es daher nicht über etwas anderes überlagern kann. Wie kann ich eine Montage mit einem transparenten Hintergrund erstellen?

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

Vielen Dank!!

War es hilfreich?

Lösung

Ich hatte das gleiche Problem und stellte fest, dass der Magickwand -C -API, der Imagick macht), die Option für die Montage nicht unterstützt.

Am Ende montierte ich es manuell wie folgt:

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

Andere Tipps

Ich weiß, dass dies eine alte Frage ist, aber ich habe eine andere Möglichkeit gefunden, dies mit der MontageImage -Funktion von Imagicick zu tun. Nachdem Sie Ihr Imagick -Objekt erstellt haben, müssen Sie den Hintergrund so transparent erklären:

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

Sobald dies festgelegt ist, können Sie das Objekt über MontageImage ausführen, das ein MontageImage mit einem transparenten Hintergrund erzeugt:

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

Anschließend können Sie Ihrem zusammengesetzten Bild das neue Montage -Bild hinzufügen, um sicherzustellen, dass die vordefinierte Imagick Composite Constot Composite_atop oder Ihre gewünschte Konstante wie folgt verwendet wird:

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

Ich bin gerade auf diese Frage gestoßen und beschlossen, eine andere Lösung zu veröffentlichen, falls jemand anderes eine andere Möglichkeit ohne manuelle Schleife tun möchte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top