2016-12-28 3 views
0

J'utilise ce code pour tous les pixels blancs transparents:imagecolortransparent() pour plusieurs couleurs

$img = imagecreatefromjpeg('test.jpg'); 
$remove = imagecolorallocate($img, 255, 255, 255); 
imagecolortransparent($img, $remove); 
imagepng($img, 'bla.png'); 

Mais je veux aussi quelques pixels « presque blanc » pour être transparent comme 254, 255, 255 etc. Comment pourrais-je ajouter que?

+0

Essayez d'utiliser « fuzz 1% » –

Répondre

0

Si votre question est de savoir comment supprimer une zone contiguë avec une gamme de couleurs similaire; Je dois dire que c'est difficile d'utiliser la bibliothèque GD de PHP. Vous devriez jeter un oeil à ImageMagick qui est une bibliothèque de traitement d'image beaucoup plus puissante et a PHP integration.

Si vous choisissez d'utiliser ImageMagick à la place, vous aurez accès à un grand nombre de scripts tiers qui effectuent des traitements d'image étonnants. L'un d'eux est le MagicWand de Fred Weinhaus. Il fait ce que vous cherchez.

Vous l'ensemencez avec une coordonnée x et y, il peut extraire la couleur de cette coordonnée et la rendre transparente avec un seuil de dissimilarité de couleur configurable (facteur fuzz). Regardez comment il peut correspondre à un gradient de bleu:

magicwand's magic

+0

Ce code ne supprime que 254, 255, 255. Eh bien oui je dois faire le fond blanc des images de vêtements transparent et en supprimant certaines couleurs spécifiques n'est pas une très bonne solution. Que suggéreriez-vous en premier lieu pour cela? –

+1

La réponse suggère d'utiliser "fuzz". Vous voulez utiliser une valeur "fuzz" pour indiquer à quel point une couleur doit être proche de la couleur "transparente" cible à affecter. De la ligne de commande ce serait "-fuzz 1" ou "-fuzz 2". Certes, la liaison PHP a une façon équivalente de définir la valeur fuzz. –

+0

@AnneSchwarz: Ma suggestion, comme je l'ai dit, est d'utiliser ImageMagick à la place. Aussi, d'après ce que je vois, ce script [MagicWand] (http://fmwconcepts.com/imagemagick/magicwand/index.php) est exactement ce dont vous avez besoin. Vous pouvez l'utiliser directement, ou en transférer des parties sur PHP pour votre propre usage. – sepehr