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

  FORUM HardWare.fr
  Programmation
  PHP

  Conserver la transparence png par imagecopyresampled

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conserver la transparence png par imagecopyresampled

n°814232
FonzieV
Posté le 03-08-2004 à 21:36:39  profilanswer
 

Hello,
J'ai réalisé un petit bout de code en PHP pour diviser une image en cubes de 24.24 pixels (afin de les utiliser dans un editeur de .map).
Le problème est que, quand je passe par imagecopyresampled (pour couper le png en cubes), la transparence disparait.
 
Voila mon code initial:  

Code :
  1. <?php
  2. $theimage = "pic1.png";
  3. $im = imagecreatefrompng($theimage);
  4. $size = getimagesize($theimage);
  5. $nbhorz=$size[0]/24;
  6. $nbvert=$size[1]/24;
  7. $name=0;
  8. $number=0;
  9.   for($i=0;$i<$nbvert;$i++)
  10.     {
  11.        for($j=0;$j<$nbhorz;$j++)
  12.          {
  13.             $im2 =  imagecreate(24,24);
  14.             imagecopyresampled($im2,$im,0,0,$j*24,$i*24,24,24,24,24);
  15.             header("Content-type: image/png" );
  16.             $name="$number.png";$number++;
  17.             imagepng($im2,$name);
  18.          }
  19.     }
  20. ?>


 
Après quelques recherches, et analyse d'autres script, j'ai réalisé ce code (qui ne marche pas non-plus)
 

Code :
  1. <?php
  2. $theimage = "pic1.png";
  3. $im = imagecreatefrompng($theimage);
  4. $size = getimagesize($theimage);
  5. $nbhorz=$size[0]/24;
  6. $nbvert=$size[1]/24;
  7. $name=0;
  8. $number=0;
  9.   for($i=0;$i<$nbvert;$i++)
  10.     {
  11.        for($j=0;$j<$nbhorz;$j++)
  12.          {
  13.             $im2 =  imagecreate(24,24);
  14.             imagecolortransparent($im2,imagecolorallocate($im2,255,0,255));
  15.             imagefill($im2, 0, 0, imagecolorallocate($im2,255,0,255));
  16.             imagecopyresampled($im2,$im,0,0,$j*24,$i*24,24,24,24,24);
  17.             header("Content-type: image/png" );
  18.             $name="$number.png";$number++;
  19.             imagepng($im2,$name);
  20.          }
  21.     }
  22. ?>


 
Personne ne sait comment faire ici?
 
Merci beaucoup.
 
Bye
 
Fonzie


Message édité par FonzieV le 09-08-2004 à 16:17:49
mood
Publicité
Posté le 03-08-2004 à 21:36:39  profilanswer
 

n°817528
FonzieV
Posté le 08-08-2004 à 17:11:32  profilanswer
 

Personne ne peut m'aider?
:-(
Merci.

n°839315
FonzieV
Posté le 01-09-2004 à 23:28:47  profilanswer
 

Bon, up up up (j'arrive pas a croire que personne ne peut m'aider; lol).
Merci (c ma derniere tentative ^^).

n°839317
pains-aux-​raisins
Fatal error
Posté le 01-09-2004 à 23:32:26  profilanswer
 

il est 23h31... patience... demain est un autre jour...

n°839335
FonzieV
Posté le 02-09-2004 à 00:09:09  profilanswer
 

^^ il est 00h10...

n°839337
pains-aux-​raisins
Fatal error
Posté le 02-09-2004 à 00:12:01  profilanswer
 

désolé, j'avais pas fait gaffe que ton 1er post était déjà ben vieux...
google n'a rien donné ?

n°839617
Freekill
Electron libre…
Posté le 02-09-2004 à 12:09:31  profilanswer
 

Utiliser imagecreatetruecolor() pour créer les petites images, et non imagecreate().
 

Code :
  1. <?php
  2. $theimage = "img.png";
  3. $im = imagecreatefrompng($theimage);
  4. $size = getimagesize($theimage);
  5. $w = $size[0];
  6. $h = $size[1];
  7. $im2 =  imagecreatetruecolor($w/2,$h/2);
  8. imagecopyresampled($im2,$im,0,0,0,0,$w/2,$h/2,$w,$h);
  9. imagecolortransparent($im2,imagecolorallocate($im2,255,255,255));
  10. header("Content-type: image/png" );
  11. imagepng($im2);
  12. ?>

n°844525
FonzieV
Posté le 07-09-2004 à 22:09:51  profilanswer
 

Yep,
Freekill, j'ai testé ton script mais malheuresement, il ne garde pas la transparence (même en ayant fait correspondre le numero de la couleur)...
Tu es sûr que ça marche bien?

n°844573
Freekill
Electron libre…
Posté le 07-09-2004 à 23:36:09  profilanswer
 

Certain, je l'ai testé… (les parties blanches sont bien transparentes)


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
n°844611
stef57
Posté le 08-09-2004 à 00:02:42  profilanswer
 

Au lieu de par la librairie GD tu peux p-e essayer d'utilsier imageMagik ! maintenant je n'ai jamais essayé, c'est juste une idée au passage !


---------------
Mon Mod Packard Bell
mood
Publicité
Posté le 08-09-2004 à 00:02:42  profilanswer
 

n°845030
FonzieV
Posté le 08-09-2004 à 14:38:58  profilanswer
 

"Au lieu de par la librairie GD tu peux p-e essayer d'utilsier imageMagik ! maintenant je n'ai jamais essayé,"
Bin, le pb c que j'ai pas acces au serveur ^^.
 
"Certain, je l'ai testé… (les parties blanches sont bien transparentes)"
Donc, petite question:
-Avec quel logiciel tu as enregistré ton png (j'utilise paintshoppro6)?
Peux-tu m'envoyer l'image avec laquelle tu as fait la démo?
 
Merci bcp.
Bye
Fonzie

n°845040
Freekill
Electron libre…
Posté le 08-09-2004 à 14:45:06  profilanswer
 
n°845141
Freekill
Electron libre…
Posté le 08-09-2004 à 15:26:02  profilanswer
 

Peut-être que tu as des problèmes parce que tu utilises des PNG-24 avec plus de 256 couleurs.
 
Essaie ceci :
 

Code :
  1. <?php
  2. // ouvre l'image d'origine
  3. $theimage = "freek.png";
  4. $im = imagecreatefrompng($theimage);
  5. // détermine sa taille
  6. $size = getimagesize($theimage);
  7. $w = $size[0];
  8. $h = $size[1];
  9. // crée l'image de sortie
  10. $im2 =  imagecreatetruecolor($w/2,$h/2);
  11. imagealphablending($im2,false);
  12. imagesavealpha($im2,true);
  13. // remplit l'image de sortie
  14. imagecopyresampled($im2,$im,0,0,0,0,$w/2,$h/2,$w,$h);
  15. // affiche l'image
  16. header("Content-type: image/x-png" );
  17. imagepng($im2);
  18. ?>


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
n°846434
FonzieV
Posté le 09-09-2004 à 23:29:07  profilanswer
 

Merci pour ton aide.
Cependant, quand j'utilise ton code j'ai un message comme quoi la fonction imagesavealpha est introuvable.
On va faire plus simple (si c possible ^^)
Voila mon image: http://fvring.free.digitartstudio.com/input.png
Comme tu le vois, la couleur mauve (255,0,255) est transparente (et ya que 256 couleurs dans l'image.
Arrives-tu a la garder la transparence avec ton code?
Si oui, arrives tu a garder la transparence avec ce code? (c le dernier code fonctionnel que j'ai fait marcher):
<?php
$theimage = "input.png";  
$im = imagecreatefrompng($theimage);  
$size = getimagesize($theimage);  
$nbhorz=$size[0]/16;
$nbvert=$size[1]/16;
$name=0;
$number=0;
  for($i=0;$i<$nbvert;$i++)
    {
       for($j=0;$j<$nbhorz;$j++)
         {
            $im2 =  imagecreate(16,16);
            imagecolortransparent($im2,imagecolorallocate($im2,255,0,255));
            imagefill($im2, 0, 0, imagecolorallocate($im2,255,0,255));
 
            imagecopyresampled($im2,$im,0,0,$j*16,$i*16,16,16,16,16);
            header("Content-type: image/png" );
            $name="output/$number.png";$number++;
            imagepng($im2,$name);
         }
    }
?>
 
Car je suis sûr que ça peut venir de mon serveur et pas du code (c quand même pas sorcier d'utiliser des fonctions gd quand même lol).
 
Merci bcp
 
Bye
 
Fonzie
 

n°846538
Freekill
Electron libre…
Posté le 10-09-2004 à 04:31:21  profilanswer
 

La fonction imagesavealpha() existe dans php depuis la version 4.3.2
 
http://be2.php.net/manual/en/funct [...] ealpha.php
 
Fais un phpinfo() pour voir ce que tu as sur ton serveur.
 
Sinon, oui ça fonctionne avec ton image et le dernier code que je t'ai donné. (avec le tiens non)
 


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
n°853431
FonzieV
Posté le 19-09-2004 à 11:40:07  profilanswer
 

Ok merci bcp. J'ai installé EasyPhp pour tester (j'ai pas trop le temps en ce moment mais je reviendrais s'il y a un autre pb, lol...).
 
Merci
 
++
 
Fonzie


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

  Conserver la transparence png par imagecopyresampled

 

Sujets relatifs
Effacer une image avec transparenceXML+XSL+PHP conserver le texte sans encodage
[php xslt_process] conserver le texte indemnconserver ses bases à la réinstallation de postgres
[HTML] Transparence des images[Résolu] Changer l'url d'un lien, et conserver son Id
Transparence sous matlab....la couleur de transparence n'est pas prise en compte dans mon image
transparence[PHP] conserver les blancs en debut et fin dans une base mysql ? :-/
Plus de sujets relatifs à : Conserver la transparence png par imagecopyresampled


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