Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
977 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php] changer le fond d'une image distante avec GD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] changer le fond d'une image distante avec GD

n°1263745
iowafr
Posté le 10-12-2005 à 20:22:48  profilanswer
 

bonjour,  
 
j'ai un script php qui recupere une image a distance et qui copie une zone de cette image sur une autre.
le probleme est que la zone copie qui doit etre colle possede un fond et sa fait pas tres beau j'aimerais pouvoir changer ce fond pour le rendre transparent  
 
comme c'est une zone d'une image distante je pense qu'il faudrait utiliser une fonction qui remplace une couleur par une autre  
 
voici mon code en complet :  
 

Code :
  1. <?php
  2. $username = "iowafr";
  3. $invert = "false"; //set to true to invert the text color
  4. //generate the image
  5. $im = imagecreatefrompng("base.png" );
  6. //get xfire image
  7. $xfire = imagecreatefrompng("http://fr.miniprofile.xfire.com/".$username.".png" );
  8. $transparent = imagecolorallocate ($xfire, 234, 237, 242);
  9. imagecolortransparent ($xfire,$transparent);
  10. //background and text color
  11. $background = imagecolorallocatealpha ( $im, 255, 255, 255, 127 );
  12. $ampcolor = imagecolorallocate($im, 25, 47, 127);
  13. $textcolor = imagecolorallocate($im, 0, 0, 0);
  14. //set font
  15. putenv('GDFONTPATH=' . realpath('.'));
  16. $font = "police";
  17. $fontsize = 10;
  18. //write the strings
  19. imagettftext($im, $fontsize, 0, 80, 20, $textcolor,$font, "Pseudo :" );
  20. imagettftext($im, $fontsize, 0, 86, 35, $textcolor,$font, "Statut :" );
  21. imagettftext($im, $fontsize, 0, 70, 52, $textcolor,$font, "Semaine :" );
  22. imagettftext($im, $fontsize, 0, 78, 67, $textcolor,$font, "En tout :" );
  23. //put xfire stuff down
  24. $colorindex = imagecolorat($xfire, 131, 55);
  25. $colorrgb = imagecolorsforindex($xfire,$colorindex);
  26. if ($colorrgb['red'] == 14 && $colorrgb['green'] == 38 &&
  27. $colorrgb['blue'] == 128)
  28. $statinvert = "true";
  29. imagecopymerge($im, $xfire, 126, 8, 128, 32, 260, 16, 100);
  30. // name
  31. imagecopymerge($im, $xfire, 146, 24, 147, 48, 260, 16, 100);
  32. // status text
  33. imagecopymerge($im, $xfire, 146, 38, 172, 79, 266, 31, 100);
  34. // this week all time text
  35. if ($statinvert == "true" )
  36. imagecopymerge($im, $xfire, 126, 24, 127, 48, 20, 16, 100);
  37. if ($statinvert != "true" )
  38. imagecopymerge($im, $xfire, 126, 24, 127, 48, 20, 16, 100);
  39. imagecopymerge($im, $xfire, 126, 38, 152, 78, 20, 32, 100);
  40. header("Content-type: image/png" );
  41. imagepng($im);
  42. imagedestroy($xfire);
  43. imagedestroy($im);
  44. ?>


 
comme vous pouvez le voir lors du test ( si on cree par exemple une image base.png vide ) c'est que ce qui serat colle dessus aura un background pas beau  
 
 
merci d'avance pour vos reponses

mood
Publicité
Posté le 10-12-2005 à 20:22:48  profilanswer
 

n°1263756
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 10-12-2005 à 20:49:18  profilanswer
 

J'ai pas compris ce que tu voulais, tu pourrais nous montrer l'image avant, après, pendant, moche, ce que tu voudrais, etc. ?

n°1263760
iowafr
Posté le 10-12-2005 à 20:54:58  profilanswer
 

image externe  a partir de laquel on vas copier une zone :  
 
http://fr.miniprofile.xfire.com/iowafr.png
 
base.png : est une simple image jaune  
 
et voici le resultat du script que j'ai donné  
 
http://img14.imageshack.us/img14/8180/xfirephp6fu.png
 
vous voyez que ce que l'on a copie de l'image a un fond bleu horrible  
j'aimerais changer ce fond

n°1263762
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 10-12-2005 à 21:13:04  profilanswer
 

Le fond bleu derrière thomas (iowafr), c'est une multitude de bleus différents. Donc même si tu essayes de rendre une couleur transparente, ça va t'obliger à t'occuper d'une tripoté de couleur.
Ce que tu peux faire, c'est passer l'image en GIF 3 couleurs, sans tramage, la réduction des couleurs a de fortes chances de te remplacer tous les tons bleus par un seul bleu
http://www.nexen.net/docs/php/anno [...] alette.php
 
Ensuite tu lui donnes la couleur transparente et tu recopies sur un nouveau fond.  
 
A tester.
 
Par contre, il va falloir bidouiller pour trouver les bons index de couleur et y aller à taton.
 
Bon courage, mais c'est faisable.

n°1263769
iowafr
Posté le 10-12-2005 à 21:46:59  profilanswer
 

j'ai transforme l'image  
 
mais comment je fais pour changer le fond ?

n°1263774
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 10-12-2005 à 22:10:27  profilanswer
 

Tu la repasse en TrueColor et tu définies la couleur transparente.
http://www.nexen.net/docs/php/anno [...] parent.php
 
ça parait laborieux, mais je ne vois que ça, peut-être quelqu'un pourra-t-il te souffler une meilleur astuce...

n°1263944
iowafr
Posté le 11-12-2005 à 13:36:02  profilanswer
 

merci de ton aide sa me fait grandement avancé  
j'ai tiré le code minim du script que j'ai donné en haut  
voici le code minum :  

Code :
  1. <?php
  2. $username = "iowafr";
  3. $im = imagecreatefrompng("base.png" );
  4. $xfire = imagecreatefrompng("http://fr.miniprofile.xfire.com/".$username.".png" );
  5. imagetruecolortopalette($xfire,FALSE,3);
  6. imagecopymerge($im, $xfire, 146, 24, 147, 48, 260, 16, 100);
  7. $color = imagecolorallocate($im, 208, 215, 223);
  8. imagecolortransparent($im,$color);
  9. header("Content-type: image/png" );
  10. imagepng($im);
  11. imagedestroy($xfire);
  12. imagedestroy($im);
  13. ?>


 
apres execution de ce code voici l'image que j'en tire :  
http://img217.imageshack.us/img217/9521/xfire2php7oo.png
 
le pas beau bleu a disparu pour laisse place a un blanc ( c'est deja mieux )  
mais comment faire pour remplacer le blanc par du transparent ?  
 
merci encore
 
edit : mince j'avais oublié IE ne gere pas la transparence des png  
je sais qu'il existe des hack je me renseigne


Message édité par iowafr le 11-12-2005 à 13:37:27

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php] changer le fond d'une image distante avec GD

 

Sujets relatifs
[Flash] Changer l'image d'un bouton quand on clique dessus?Image plein écran et mapping.
[VBS] Accèder à une machine distanteCréer et enregister une image avec wxwidgets
enregistrer imageImage stocker base de donnee access
transfert d'image via soap wsdl[html] problème avec background image d'une cellule
Analyser la netteté d une image 
Plus de sujets relatifs à : [php] changer le fond d'une image distante avec GD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR