Domanda

Ho avuto qualche problema a generare un'immagine con l'estensione PHP Imagick. Tutto funziona bene, tranne il mio seguente "montaggio" ha uno sfondo bianco e quindi non posso sovrapponderlo sopra qualcos'altro. Come posso generare un montaggio con uno sfondo trasparente?

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

Grazie!!

È stato utile?

Soluzione

Ho avuto lo stesso problema e ho scoperto che l'API Magickwand C, che alimenta Imagick), non supporta l'opzione per il montaggio.

Ho finito per montare manualmente così:

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

Altri suggerimenti

So che questa è una vecchia domanda, ma ho trovato un altro modo per farlo usando la funzione MontageImage di Imagick. Dopo aver creato il tuo oggetto Imagick, devi dichiarare lo sfondo come trasparente in questo modo:

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

Una volta impostato, è possibile eseguire l'oggetto tramite MontageImage che creerà un montaggio con uno sfondo trasparente:

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

Quindi è possibile aggiungere la nuova immagine del montaggio all'immagine composita assicurando di utilizzare il composito composito Imagick predefinito o le costanti desiderate come questa:

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

Ho appena attraversato questa domanda e ha deciso di pubblicare un'altra soluzione nel caso in cui qualcun altro voglia un altro modo per farlo senza un ciclo manuale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top