Page 1 sur 1

Alpha sur image png avec gd

Posté : 23 oct. 2009, 16:57
par Gouba13
Bonjour

Voila j'ai une fonction de redimensionnement d'image qui fonctionne a peut pret bien je lui donne le nom du fichier , l'emplacement et la taille a redimensionner elle verifie si c'est une image jpeg , gif ou png.

L'image est bien redimensionné mais le soucis viens des png et gif le fond transparent est noir alors que je souhaiterais qu'il soit transparent.

voila la fonction:
// fonction redimensionnement images
function redimensionnement_image($content_dir,$tmp_file,$name_file,$taillemax) { 


if($name_file!="" and $name_file!="thb_")
{
		$name_file = strtr($name_file,"%âäàéèêëîïôöùûü,","-aaaeeeeiioouuu-"); 
		$name_file = strtr($name_file," ","-");
		$name_file = strtr($name_file,"'","-");
		$test2img=explode("thb_",$name_file);
			if($test2img[1]==''){
								$nomimg2="";
								move_uploaded_file($tmp_file, $content_dir . $name_file); 
								}
			else				{
								$name_file=$test2img[1];$nomimg2="thb_";
								}
		$source=$content_dir.$name_file;
		//verification pour savoir si il sagit bien d'une image
		$ext = explode(".", $name_file); 
		$ext = $ext[1];
		if($ext=="JPG" or $ext=="jpg"){	$source = imagecreatefromjpeg($source);}
		elseif ($ext=="gif" or $ext=="GIF"){$source = imagecreatefromgif($source);}
		elseif ($ext=="png" or $ext=="PNG"){$source = imagecreatefrompng($source);}
		else { echo "<SCRIPT language=\"Javascript\">alert(\"Vous devez inserer une image au format JPEG GIF ou PNG.\");window.location.replace(document.referrer)</SCRIPT>";
		exit;}


		$largeur_source = imagesx($source); 
		$hauteur_source = imagesy($source); 

		
			if($largeur_source> $hauteur_source )
			{
			$largeur=$taillemax;
			$hauteur=$hauteur_source*(($taillemax)/$largeur_source);
			}

			if($largeur_source== $hauteur_source )
			{
			$largeur=$taillemax;
			$hauteur=$taillemax;
			}

			if($largeur_source < $hauteur_source )
			{
			$hauteur=$taillemax;
			$largeur=$largeur_source*(($taillemax)/$hauteur_source);
			}


	$destination = imagecreatetruecolor($largeur, $hauteur); 

	// On crée l'image a la bonne taille
	imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur, $hauteur, $largeur_source, $hauteur_source); 

	//on enregistre l image
	if ($ext=="gif" or $ext=="GIF"){imagegif($destination, $content_dir.$nomimg2.$name_file,100);}
	elseif ($ext=="png" or $ext=="PNG"){imagepng($destination, $content_dir.$nomimg2.$name_file,9);}

	else{imagejpeg($destination, $content_dir.$nomimg2.$name_file,100);}

}

return $name_file;
}
Merci de votre aide
@++

Re: Alpha sur image png avec gd

Posté : 23 oct. 2009, 17:02
par fab
Problème intéressant je viens de trouver quelque chose dans les commentaires de la fonction imagecreatefrompng!
Don't forget about imagealphablending() and imagesavealpha() if you're working with [semi]transparent png.

<?php
$file = 'semitransparent.png'; // path to png image
$img = imagecreatefrompng($file); // open image
imagealphablending($img, true); // setting alpha blending on
imagesavealpha($img, true); // save alphablending setting (important)