Direct Sims Posté 20 Juillet 2009 Posté 20 Juillet 2009 Bonsoir, Après plusieurs heures de recherches veines, je m'en remet à vous. Je créer un script permettant d'écrire du texte sous forme d'images, je m'explique : Chaque lettre de l'utilisateur correspond à une image .png transparente. Le problème c'est que les lettres se chevauchent et chaque partie transparente, rend en partie transparente l'image précédente, voici une image du problème : Voici mon script : <?php// Type de l'imageheader ("Content-type: image/png");// Informations texte$lettres = stripslashes(htmlspecialchars($_GET['session_lettres']));if($lettres == "") $lettres = "Erreur";$width = 105*strlen($lettres);$height = 155;// Création de l'image$image = imagecreate($width,$height);$orange = imagecolorallocate($image, 255, 106, 0);for ($i=0; $i <= strlen($lettres); $i++) // Boucle des lettres{ // Chargement des lettres $lettre = imagecreatefrompng("./images/lettres/".$lettres[$i].".png"); $width_lettre = imagesx($lettre); $height_lettre = imagesy($lettre); // Fusion des images imagealphablending($lettre,false); imagecopy($image, $lettre, $i*100, 0, 0, 0, $width, $height*2); imagesavealpha($lettre,true);}imagecolortransparent($image, $orange);// Création de l'imageimagepng($image);?>
cyberlaura Posté 21 Juillet 2009 Posté 21 Juillet 2009 Bonjour Direct Sims, je pense que ton problème viens du fait que tu copies l'image suivante 100 pixels plus loin que l'image précédente imagecopy($image, $lettre, $i*100, 0, 0, 0, $width, $height*2); Il faudrait plutôt créer un compteur qui ajoute la largeur de l'image $width_lettre dont tu ne te sers pas d'ailleurs. Par exemple : imagecopy($image, $lettre, $xLettreSuivante, 0, 0, 0, $width, $height*2);$xLettreSuivante+=$width_lettre;
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 Je précise que le chevauchement des lettres est voulut mais qu'il bug pour les problèmes que j'ai cité ci-dessus. Merci de ta participation, j'espère que l'on va trouver le problème
captain_torche Posté 21 Juillet 2009 Posté 21 Juillet 2009 Le problème ne viendrait pas de imagealphablending, que tu as mis à false pour te permettre d'utiliser imagesavealpha ?
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 ehhhh.... C'est à dire ? Oui d'après php.net, pour utiliser imagesavealpha il faut désactiver imagealphablending
captain_torche Posté 21 Juillet 2009 Posté 21 Juillet 2009 Essaye de commenter la ligne avec imagesavealpha, et de remettre l'imagealphablending à true, pour voir ?
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 Ah nooon, ça ne change toujours rien ! C'est pas possible, j'ai envie de hurler !
captain_torche Posté 21 Juillet 2009 Posté 21 Juillet 2009 Juste au cas où : tu es sûr que tes images de lettres sont bien transparentes ?
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 Sur à 100% ! http://creasims.simsous.directsims.com/images/lettres/a.png http://creasims.simsous.directsims.com/images/lettres/b.png http://creasims.simsous.directsims.com/images/lettres/c.png ...
captain_torche Posté 21 Juillet 2009 Posté 21 Juillet 2009 Regarde si tu ne trouverais pas la solution ici : http://www.webmaster-hub.com/index.php?showtopic=16187
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 Non, moi, mes images sont bien transparentes c'est comme si on mettait plusieurs images transparentes sans ajouter de claques :
cyberlaura Posté 21 Juillet 2009 Posté 21 Juillet 2009 (modifié) Il ne faudrait pas plutôt utiliser imagecopymerge ? Et d'après ce que j'ai lu, ça fonctionne plus facilement avec des .gif ! Modifié 21 Juillet 2009 par cyberlaura
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 J'ai déjà essayé plusieurs fois, sans succès, peut-être mon code est-il faux ? Mais je ne pense pas
cyberlaura Posté 21 Juillet 2009 Posté 21 Juillet 2009 (modifié) Je te confirme que ça marche bien mieux avec des gif ! ( ab ) Bon, t'as que 65 lettres à reprendre Modifié 21 Juillet 2009 par cyberlaura
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 (modifié) Oui moi aussi j'ai fait avec les gifs, mais j'ai après il y a le problème de qualité qu'il faut régler C'est vraiment un casse tête ce truc EDIT: non le gif ne va pas, il ne gère qu'un seul niveau de transparence... Modifié 21 Juillet 2009 par Direct Sims
jcaron Posté 21 Juillet 2009 Posté 21 Juillet 2009 Il faut que tu crées l'image avec imagecreatetruecolor, et hop! Note que les imagealphablending et imagesavealpha sont inutiles. Par contre c'est quoi le but du jeu avec l'orange? Si tu veux avoir tes lettres sur fond orange il va falloir faire un petit coup de imagefilledrectangle (par exemple) avant de copier les lettres dessus. Jacques.
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 imagecreatetruecolor où ça ? Désolé je dois être coincé
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 Là j'ai une belle erreur <?phpini_set("memory_limit",'16M');// Type de l'imageheader ("Content-type: image/png");// Informations texte$lettres = stripslashes(htmlspecialchars($_GET['session_lettres']));if($lettres == "") $lettres = "erreur";$width = 100*strlen($lettres);$height = 165;// Création de l'image$image = imagecreatetruecolor($width,$height);for ($i=0; $i <= strlen($lettres); $i++) // Boucle des lettres{ // Chargement des lettres $lettre = imageformpng("http://creasims.simsous.directsims.com/images/lettres/".$lettres[$i].".png"); $width_lettre = imagesx($lettre); $height_lettre = imagesy($lettre); // Fusion des images imagecopy($image, $lettre, $i*90, 0, 0, 0, $width_lettre, $height_lettre);}// Création de l'imageimagepng($image);?>
jcaron Posté 21 Juillet 2009 Posté 21 Juillet 2009 1. C'est quoi l'erreur? Ca pourrait aider... 2. Le "imageformpng" au lieu de "imagecreatefrompng" ça ne doit pas aider... Jacques.
Direct Sims Posté 21 Juillet 2009 Auteur Posté 21 Juillet 2009 Bonsoir ! J'ai deux choses à dire en premier merci beaucoup Jacques ! Je n'es plus de problème lors du chevauchement, par contre, l'image de fond de l'image est noir maintenant, plus transparentes...
jcaron Posté 21 Juillet 2009 Posté 21 Juillet 2009 Ajoute ça après le imagecreatetruecolor (et donc avant de copier tes lettres dessus): imagesavealpha($image,true);$transp = imagecolorallocatealpha($image, 0, 0, 0, 127);imagefill($image,0,0,$transp); Jacques.
Direct Sims Posté 22 Juillet 2009 Auteur Posté 22 Juillet 2009 Tu es un génie !!!!!! J'avais trouvé un truc mais la qualité en été diminué, là c'est PARFAIT !
jcaron Posté 22 Juillet 2009 Posté 22 Juillet 2009 :-) Ceci dit, je n'ai fait que lire la doc :-) Jacques.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant