2016-12-13 3 views
2

Je souhaite convertir une couleur donnée en transparence avec iMagick. J'ai trouvé un moyen de le faire, mais il se comporte comme un seau de peinture plutôt que d'examiner toute l'image.Convertir tous les pixels d'une couleur donnée en transparent dans la syntaxe iMagick (PHP)?

Pour l'exemple suivant, j'utilise ceci:

$transparentColor = new ImagickPixel('transparent'); 
$image->floodFillPaintImage($transparentColor, 20000, "#0009c5", 0, 0, false, Imagick::CHANNEL_ALPHA); 

This is the input image This is the output image Le résultat que je voudrais voir est tous les domaines bleus se sont tournés vers la transparence. Malheureusement, il semble que le «remplissage» soit le point clé de cette fonction et s'arrête donc lorsqu'il est confronté à des couleurs non «cibles».

Est-ce que quelqu'un sait comment accomplir tourner toutes les zones bleues à l'aide transparente imagick (commande pas la ligne ImageMagick)?

Merci d'avance!

+1

double possible de [Imagick. Changer une couleur pour être transparent] (http://stackoverflow.com/questions/9297967/imagick-changing-a-color-to-be-transparent) –

Répondre

0

Essayez:

$image->transparentPaintImage($targetColor, $alphaLevel, $fuzz, false); 

Si les zones transparentes sont "en désordre", il peut aider à Dépoussiérer:

$image->despeckleimage(); 

Doc: http://php.net/manual/en/imagick.transparentpaintimage.php

+0

Cela semble avoir fonctionné! La seule exception était que cette méthode ne semble pas accepter ImagicPixel ('transparent'). Donc, il a finalement travaillé avec: '$ image-> transparentPaintImage ($ targetColor, 0.0, $ fuzz, false);' Merci beaucoup pour votre aide! Vraiment apprécié! – Shochu

+0

Oh, vous avez raison. Relisant le document, le 2ème paramètre est le niveau alpha (0.0 à 1.0). Merci pour la correction - J'ai édité ma réponse. –