Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Gif à fond transparent

1 view
Skip to first unread message

Pascale

unread,
Feb 13, 2010, 4:10:33 AM2/13/10
to
Bonjour � tous,

J'ai un r�pertoire comportant des images entr�es par des utilisateurs. Ces
images sont cens�es �tre des logos, mais certaines sont vraiment trop
volumineuses. Mon objectif est donc de redimensionner ces photos.
Une partie de ces images sont en jpg et l'autre partie des images sont en
gif.
Redimensionner n'est pas en soi le probl�me, �a marche sauf que
j'ai un souci avec certains gif dont le fond est transparent : je me
retrouve avec un fond noir et c'est MAL (:
J'ai cherch� sur le ouaibe et il semble que GD ait du mal avec les gif �
fond transparent. Je n'ai pas trouv� de solution convainquante. � la
rigueur, � d�faut de fond transparent un fond blanc conviendrait, mais je
ne peux pas transformer le noir en blanc (certains logos contiennent
�videmment du noir).

Les dimensions des images sont bien s�r calcul�es auparavant. $chemin,
c'est le nom du fichier r�pertoire compris.

Pour les gif, je fais quelque chose du genre :

if (imagecreatefromgif($chemin) !== FALSE)
{
$logo = imagecreatefromgif($chemin);
if (imagecopyresampled($ph0,$logo, 0, 0, 0, 0, $lph0, $hph0,
$lori0, $hori0)!==FALSE)
{
$logo='logored/'.$image;
imagegif($ph0, $logo,100);
}
else
{
echo 'Erreur sur imagecopyresampled succ�dant � un imagecreatefromgif
r�ussi.<br>';
}
}
else
{
echo 'Erreur de imagecreatefromgif pour l\'image '.$image.'<br>';
}

Si quelqu'un veut bien �clairer ma lanterne...


--
Pascale

Patrick 'Zener' Brunet

unread,
Feb 13, 2010, 5:10:41 AM2/13/10
to
Bonjour.

"Pascale" <chaton.t...@alussinan.org> a �crit dans le message
de news mouflette-...@la-grille-verte.net


> J'ai un r�pertoire comportant des images entr�es par des
> utilisateurs. Ces images sont cens�es �tre des logos, mais
> certaines sont vraiment trop volumineuses. Mon objectif est donc de
> redimensionner ces photos.
> Une partie de ces images sont en jpg et l'autre partie des images
> sont en gif.
> Redimensionner n'est pas en soi le probl�me, �a marche sauf que
> j'ai un souci avec certains gif dont le fond est transparent : je me
> retrouve avec un fond noir et c'est MAL (:
> J'ai cherch� sur le ouaibe et il semble que GD ait du mal avec les
> gif � fond transparent. Je n'ai pas trouv� de solution
> convainquante. � la rigueur, � d�faut de fond transparent un fond
> blanc conviendrait, mais je ne peux pas transformer le noir en
> blanc (certains logos contiennent �videmment du noir).
>

Plein de trucs l�:

http://www.php.net/manual/fr/function.imagecolortransparent.php

http://php.net/manual/fr/function.imagecreatefromgif.php

--
Cordialement.

* Patrick BRUNET www.ipzb.fr www.ipzb-pro.com
* E-mail: lien sur http://zener131.eu/ContactMe

Pascale

unread,
Feb 13, 2010, 10:26:11 AM2/13/10
to
"Patrick 'Zener' Brunet" <use.link.i...@ddress.invalid> �crivait
news:hl5u3h$7pe$1...@shakotay.alphanet.ch:

> http://www.php.net/manual/fr/function.imagecolortransparent.php

Exact, voil� ce qu'il me fallait ! J'avoue que je suis un peu paum�e dans
toutes les fonctions de GD.
�a marche, merci beaucoup !

--
Pascale

Pascale

unread,
Feb 13, 2010, 1:25:18 PM2/13/10
to
Et bien je m'aper�ois que j'ai �t� bien trop optimiste !

En effet, je vois au moins 2 probl�mes : ce logo sur fond noir
http://i60.servimg.com/u/f60/11/80/63/78/logo-n11.gif

devient
http://i60.servimg.com/u/f60/11/80/63/78/logo-n10.gif

Ce qui est plus que tr�s vilain.

Autre souci : les gifs anim�s qui ne supportent pas du tout le traitement�!
Si j'�tais capable de les d�tecter, je pourrais � la rigueur les omettre,
mais je ne connais pas de moyen de le faire.

Bref, je suis pas sortie de l'auberge !

--
Pascale

Pascale

unread,
Feb 13, 2010, 3:21:25 PM2/13/10
to
Pascale <chaton.t...@alussinan.org> �crivait
news:mouflette-...@la-grille-verte.net:

> En effet, je vois au moins 2 probl�mes : ce logo sur fond noir
> http://i60.servimg.com/u/f60/11/80/63/78/logo-n11.gif
>
> devient
> http://i60.servimg.com/u/f60/11/80/63/78/logo-n10.gif
>
> Ce qui est plus que tr�s vilain.

Encore moi...

Je n'ai pas trouv� pour l'instant comment r�soudre ce probl�me.

> Autre souci : les gifs anim�s qui ne supportent pas du tout le
> traitement�! Si j'�tais capable de les d�tecter, je pourrais � la
> rigueur les omettre, mais je ne connais pas de moyen de le faire.

J'ai r�ussi � trouver une fonction qui d�tecte les gifs anim�s, ce qui me
suffit�: les logos sont limit�s en ��poids�� et les gifs anim�s sont donc
rarement tr�s grands.

--
Pascale

docanski

unread,
Feb 13, 2010, 5:01:35 PM2/13/10
to
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Pascale ecrit ce qui suit en ce 13/02/2010 10:10 :
> Bonjour ᅵ tous,

Bonsoir,

> J'ai un rï¿œpertoire comportant des images entrï¿œes par des utilisateurs. Ces
> images sont censï¿œes ï¿œtre des logos, mais certaines sont vraiment trop

> volumineuses. Mon objectif est donc de redimensionner ces photos.
> Une partie de ces images sont en jpg et l'autre partie des images sont en
> gif.

> Redimensionner n'est pas en soi le problï¿œme, ï¿œa marche sauf que

> j'ai un souci avec certains gif dont le fond est transparent

Je crois bien que ImageMagick (logiciel libre), ᅵ insᅵrer dans le
formulaire utilisᅵ par tes visiteurs, est capable de faire ᅵa. Au moins
en jpg mais aussi dans une centaine de formats diffï¿œrents. J'ignore
toutefois s'il traite les gif's
L'automatisation pourrait t'ï¿œviter la tï¿œche fastidieuse de
redimensionner les photos entrantes.

Cordialement,
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallï¿œe de la Rance maritime : http://valderance.free.fr/
Les cï¿œtes du nord de la Bretagne : http://docarmor.free.fr/

Sergio

unread,
Feb 14, 2010, 3:04:24 AM2/14/10
to
Pascale a �crit :

> Et bien je m'aper�ois que j'ai �t� bien trop optimiste !
>
> En effet, je vois au moins 2 probl�mes : ce logo sur fond noir
> http://i60.servimg.com/u/f60/11/80/63/78/logo-n11.gif
>
> devient
> http://i60.servimg.com/u/f60/11/80/63/78/logo-n10.gif
>
> Ce qui est plus que tr�s vilain.
>
> Autre souci : les gifs anim�s qui ne supportent pas du tout le traitement !
> Si j'�tais capable de les d�tecter, je pourrais � la rigueur les omettre,
> mais je ne connais pas de moyen de le faire.

En tout cas, sur Wikip�dia, les GIF anim�s sont r�duit correctement sans perdre le fond, ni l'animation. Comment qu'ils font...
myst�re...

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org

Pascale

unread,
Feb 14, 2010, 5:21:33 AM2/14/10
to
docanski <docanski_...@euphonynet.be.invalid> �crivait
news:hl79ai$1p5e$1...@obelix.gegeweb.org:

> Je crois bien que ImageMagick (logiciel libre), � ins�rer dans le
> formulaire utilis� par tes visiteurs, est capable de faire �a. Au moins
> en jpg mais aussi dans une centaine de formats diff�rents. J'ignore

> toutefois s'il traite les gif's

> L'automatisation pourrait t'�viter la t�che fastidieuse de
> redimensionner les photos entrantes.

� l'heure actuelle, j'ai bien pr�vu un traitement automatique des images
entrantes � l'aide de GD qui a l'avantage d'�tre partie int�grante de PHP.
Je dois dire que je suis un peu r�ticente � l'id�e d'ajouter un programme
externe � mon code.
Au d�part, je ne m'�tais pas aper�ue que les gif anim�s posaient probl�me,
ainsi que ceux sur fond transparent. De plus, j'ai un existant � traiter,
et je travaille l�-dessus actuellement. Je pense que je peux
raisonnablement ne pas redimensionner les gifs anim�s (ils sont rarement
tr�s grands, compte tenu de la limitation de poids impos�e).

Je pourrais aussi refuser carr�ment les images trop grandes (de m�me que
je refuse les images trop lourdes), mais la plupart des utilisateurs en
question ne savent pas redimensionner une image, il faut donc bien le faire
� leur place.
Le logo sur fond noir qui devient tout blanc et compl�tement illisible me
pose le plus gros souci. Certains gifs ont eux aussi un comportement
bizarre mais moins g�nant : les zones blanches deviennent PARFOIS
transparentes. Ce n'est pas tr�s g�nant car les logos en question seront
affich�s sur un fond quasiment blanc, mais quand m�me...

Pour les logos transparents, apr�s avoir utilis� imagecreatefromgif et
imagecreatetruecolor, j'utilise une fonction p�ch�e directement sur le
manuel PHP :

function transparent($nouvimage,$image_source)
{
$transparenceIndex = imagecolortransparent($image_source);
$transparenceCouleur = array('red' => 255, 'green' => 255, 'blue' => 255);
if ($transparenceIndex >= 0)
{
$transparenceCouleur = imagecolorsforindex($image_source,
$transparenceIndex);
}
$transparenceIndex = imagecolorallocate($nouvimage,
$transparenceCouleur['red'], $transparenceCouleur['green'],
$transparenceCouleur['blue']);
imagefill($nouvimage, 0, 0, $transparenceIndex);
imagecolortransparent($nouvimage, $transparenceIndex);
}

Ensuite, je fais un imagecopyresampled et un imagegif.

Je rep�re les gifs anim�s l� aussi � l'aide d'une fonction trouv�e sur le
manuel PHP, qui semble marcher de mani�re tout � fait satisfaisante :

function est_ani($fichier)
{
$compte= (bool)preg_match('#(\x00\x21\xF9\x04.{4}\x00\x2C.*){2,}#s',
file_get_contents($fichier));
return $compte;
}

--
Pascale

Patrick 'Zener' Brunet

unread,
Feb 14, 2010, 9:18:31 AM2/14/10
to
Bonjour.

"Pascale" <chaton.t...@alussinan.org> a �crit dans le message
de news mouflette-...@la-grille-verte.net

Je n'ai jamais utilis�, mais sur la page de mon second lien, il y a dans la
partie forum des infos sur la mani�re de d�tecter les GIFs anim�s, et aussi
sur la structure interne du fichier.
Je pense qu'il faut partir de l� pour traiter s�par�ment les frames (il
faudra peut-�tre d�couper le fichier), sur la base d'une palette commune.

Message has been deleted

Pascale

unread,
Feb 14, 2010, 12:59:58 PM2/14/10
to
Anne G <ann.guille@gmail[anti-spam].com.invalid> �crivait news:4b782118@ac-
versailles.fr:

> Je l'inverserais, tout simplement.
> Noir sur fond blanc.

Oui, c'est certain, mais comment automatiser ce genre de traitement en
�tant s�r du r�sultat ?

Apr�s de multiples tests il appara�t que la r�duction automatique des gifs
est vraiment gal�re.

imagecreatefromgif($chemlogonouv);
transparent($ph0,$logonouv);
imagecopyresampled($ph0,$logonouv, 0, 0, 0, 0, $lph0, $hph0, $lori0,
$hori0);
imagegif($ph0, $logonouv,100);

...la fonction ��transparent�� �tant d�finie ainsi :


$transparenceIndex = imagecolortransparent($image_source);
$transparenceCouleur = array('red' => 255, 'green' => 255, 'blue' => 255);
if ($transparenceIndex >= 0)
{
$transparenceCouleur = imagecolorsforindex($image_source,
$transparenceIndex);
}
$transparenceIndex = imagecolorallocate($nouvimage,
$transparenceCouleur['red'], $transparenceCouleur['green'],
$transparenceCouleur['blue']);
imagefill($nouvimage, 0, 0, $transparenceIndex);
imagecolortransparent($nouvimage, $transparenceIndex);

Tout cela donne un r�sultat au mieux pas net et au pire, tr�s moche, alors
que le redimensionnement des jpg se passe vraiment sans douleur.

Donc, comme j'en ai marre de chercher des solutions trop compliqu�es pour
mes deux neurones, je vais proc�der ainsi :

- pour l'existant : je redimensionne automatiquement les images en jpg qui
le n�cessitent. Je ne touche pas aux gifs. Je redimensionne � la main, avec
mon FastStoneViewer pr�f�r�, la demie-douzaine d'images en gif qui
n�cessitent d'�tre redimensionn�es. C'est pas la mer � boire.

- pour le futur applicatif : je redimensionne les jpg qui le n�cessitent,
je laisse passer les gifs qui ne d�passent pas la limite de dimension que
j'ai fix�e. Je refuse carr�ment (message d'erreur) les gifs qui
d�passeraient les limites requises.

Je ne vais pas non plus passer toutes mes vacances l� dessus, non mais (-:

Merci � tous ceux qui m'ont aid�e, j'ai appris des trucs int�ressants�!

--
Pascale

0 new messages