Php => GD, png et suppression de couleur
Ambigua
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'utilise un script php pour traiter une image chargée avec un formulaire.
Dans le cas d'un jpg, je voudrait supprimer le blanc du fond, pour ne garder que les "autres couleurs".. et sauver tout ca en png ( pour la transparence)
Donc, j'ai fait :
$image_jpg = $dest.'image.jpg';
//GD image
$image = imagecreatefromjpeg($image_jpg);
imagetruecolortopalette($image, false, 255);
$fond = imagecolorclosestalpha($image, 255, 255, 255, 0);
imagecolortransparent($image, $fond);
imagepng($image, $dest."signature.png",0);
imagedestroy($image);
Ca m'enleve une partie du fond blanc.. mais ca laisse un vilain pourtour blanc autour des blocs qui ont de la couleur ..
Avec Imagick, j'avais réusii a faire mieux en local, mais cette classe ne fonctionne pas sur les mutualisés d'OVH ( et mon script doit marcher sur plusieurs hébergements .. )
Comment améliorer ce script pour qu'il supprime TOUT ce qui est blanc ou quasi blanc ??et ce avec GD ...
Merci
Florent
J'utilise un script php pour traiter une image chargée avec un formulaire.
Dans le cas d'un jpg, je voudrait supprimer le blanc du fond, pour ne garder que les "autres couleurs".. et sauver tout ca en png ( pour la transparence)
Donc, j'ai fait :
$image_jpg = $dest.'image.jpg';
//GD image
$image = imagecreatefromjpeg($image_jpg);
imagetruecolortopalette($image, false, 255);
$fond = imagecolorclosestalpha($image, 255, 255, 255, 0);
imagecolortransparent($image, $fond);
imagepng($image, $dest."signature.png",0);
imagedestroy($image);
Ca m'enleve une partie du fond blanc.. mais ca laisse un vilain pourtour blanc autour des blocs qui ont de la couleur ..
Avec Imagick, j'avais réusii a faire mieux en local, mais cette classe ne fonctionne pas sur les mutualisés d'OVH ( et mon script doit marcher sur plusieurs hébergements .. )
Comment améliorer ce script pour qu'il supprime TOUT ce qui est blanc ou quasi blanc ??et ce avec GD ...
Merci
Florent
A voir également:
- Php => GD, png et suppression de couleur
- Forcer suppression fichier - Guide
- Boite a couleur - Télécharger - Divers Photo & Graphisme
- Excel cellule couleur si condition texte - Guide
- Pipette couleur word - Forum Microsoft Office
- Somme si couleur - Guide
1 réponse
Bonjour,
Le problème vient de la compression jpeg, qui « bave » sur les contours. Du coup, autour des zones du premier plan, le fond n'est pas tout-à-fait blanc, et il n'est donc pas remplacé par du transparent.
Je ne vois pas de solution immédiate à ton problème.
Ceci dit, tu devrais pouvoir parcourir les pixels de ton image, et remplacer ceux qui sont « presque blancs » par du blanc ; par exemple, en disant que la composante R + la composante V + la composante B doit être supérieure à un seuil que tu détermines, disons 750 (car 255 x 3 = 765)...
Et après seulement, tu appliques la transparence.
Par contre, je l'avoue, c'est un peu du bricolage, et ça peut rendre transparentes des zones qui sont juste très claires...
Xavier
Le problème vient de la compression jpeg, qui « bave » sur les contours. Du coup, autour des zones du premier plan, le fond n'est pas tout-à-fait blanc, et il n'est donc pas remplacé par du transparent.
Je ne vois pas de solution immédiate à ton problème.
Ceci dit, tu devrais pouvoir parcourir les pixels de ton image, et remplacer ceux qui sont « presque blancs » par du blanc ; par exemple, en disant que la composante R + la composante V + la composante B doit être supérieure à un seuil que tu détermines, disons 750 (car 255 x 3 = 765)...
Et après seulement, tu appliques la transparence.
Par contre, je l'avoue, c'est un peu du bricolage, et ça peut rendre transparentes des zones qui sont juste très claires...
Xavier