Actually it does seem to work just not the way expected perhaps.
Looking at the fuzz option on ImageMagick's site (http://www.imagemagick.org/script/command-line-options.php#fuzz), "The distance can be in absolute intensity units or, by appending % as a percentage of the maximum possible intensity (255, 65535, or 4294967295)."
As it requires a float, the percentage value won't work so it actually one of the max intensity values. In my case, the images I was working with seemed to have max intensity values of 65535. So a fuzz of 6500, for roughly 10%, seemed to do the trick.
The part that might be problematic though is how do you determine the max intensity of a color/image? Using a static 6500 would be fine until I would have to convert an image with a max intensity other than 65535. If it's 255 it would wipe the entire image. Or fall far short on the fuzz with the larger value.
Imagick::paintTransparentImage
(PECL imagick 2.0.0)
Imagick::paintTransparentImage — Remplit les pixels avec une couleur
Description
Avertissement
Cette fonction n'est pas documentée et seule la liste des arguments est disponible.
Change les pixels qui correspondent à une couleur en une couleur de remplissage.
Liste de paramètres
- target
-
La couleur cible, avec son opacité.
- alpha
-
Le niveau de transparence : 1.0 est totalement opaque, et 0 est totalement transparent.
- fuzz
-
Ce paramètre indique la tolérance qui permet de considérer que deux couleurs sont identiques.
Valeurs de retour
Returns TRUE on success.
Erreurs / Exceptions
Lance une exception ImagickException si une erreur survient.
Historique
| Version | Description |
|---|---|
| 2.1.0 | Permet désormais l'utilisation d'une chaîne pour représenter la couleur. Les versions précédentes ne permettaient que les objets ImagickPixel. |
Imagick::paintTransparentImage
Anonymous
06-Mar-2009 04:11
06-Mar-2009 04:11
paziek at gmail dot com
13-Feb-2009 02:53
13-Feb-2009 02:53
Fuzz attribute doesn't work here.
#!/usr/bin/php
<?php
if(!isset($argv[1])) die("input file\n");
$im = new Imagick( $argv[1] );
$im->paintTransparentImage('rgb(246,241,230)', 0.0, 10);
file_put_contents('transparent_'.$argv[1], $im);
?>
Will "remove" only colors that match exactly rgb(246,241,230)
