Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2012, 17h02   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 136
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 136
Points : 14
Points : 14
Par défaut garder la transparence d'un png 24

Bonjour,

voila j'ai fais une admin qui permet d'enregisrer des images
pb quand j'enregistre mes png 24 car j'ai besoin que ces images gardent leur transparence car elle viennent en superposition d'autre (ce sont des etiquettes genre 'promo')

bref apres etre passer par le redimentionnement de l'image le fond devient noir???

si vous avez une solution?
merci

voici mon code
oui il traite mon image "normale" et sa "vignette"

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
<?php
//-------------------------------------------
// redimentionnement et compression de l'image
//-------------------------------------------
 
if ($extension_upload == 'jpeg' OR $extension_upload == 'jpg' OR $extension_upload == 'JPG' ) //si mon image source est un jpeg
{
	$source = imagecreatefromjpeg($dossierNormales.'/'.$nomDossier.'.'.$extension_upload); // on créer un jpeg a partir de l'image indiqué 
}
elseif ($extension_upload == 'png') //sinon si mon image source est un png
{
	$source = imagecreatefrompng($dossierNormales.'/'.$nomDossier.'.'.$extension_upload); // on créer un png a partir de l'image indiqué 
}
elseif ($extension_upload == 'gif') //sinon si mon image source est un gif
{
	$source = imagecreatefromgif($dossierNormales.'/'.$nomDossier.'.'.$extension_upload); // on créer un gif a partir de l'image indiqué 
}
// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);	//me renvoi la largeur de l'image source
$hauteur_source = imagesy($source);	//me renvoi la hauteur de l'image source
 
// ------------ Redimentionnement de l'image Normales et vignettes ------------
// Si la hauteur ou la longueur de mon image est superieur a par ex : 850px, je la redimentionne
if ($largeur_source != 70 OR $hauteur_source != 70)
{
	$largeurNormales_new = 200; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
	$hauteurNormales_new = 200; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
	$largeurVignettes_new = 70; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
	$hauteurVignettes_new = 70; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
}
else	// sinon je la laisse tel quelle (je ne la redimentionne pas)
{
	$largeurNormales_new = $largeur_source; 
	$hauteurNormales_new = $hauteur_source;
	$largeurVignettes_new = 70; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
	$hauteurVignettes_new = 70; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
}
// --- Fin redimentionnement de l'image Normales et vignettes ---
 
$destinationNormales = imagecreatetruecolor($largeurNormales_new, $hauteurNormales_new); // On crée la miniature vide avec imagecreatetruecolor() qui gère des millier de couleur contrairement a imagecreate() qui gere que 256 couleurs
$destinationVignettes = imagecreatetruecolor($largeurVignettes_new, $hauteurVignettes_new); // On crée la miniature vide avec imagecreatetruecolor() qui gère des millier de couleur contrairement a imagecreate() qui gere que 256 couleurs
 
// On créer la miniature grace la fonction imagecopyresampled() qui permet de redimentionner des images
imagecopyresampled($destinationNormales, $source, 0, 0, 0, 0, $largeurNormales_new, $hauteurNormales_new, $largeur_source, $hauteur_source);
imagecopyresampled($destinationVignettes, $source, 0, 0, 0, 0, $largeurVignettes_new, $hauteurVignettes_new, $largeur_source, $hauteur_source);
 
// On enregistre la miniature grace la fonction imagejpeg() crée un fichier JPEG depuis l'image fournie. 
if ($extension_upload == 'jpeg' OR $extension_upload == 'jpg' OR $extension_upload == 'JPG' ) //si mon image source est un jpeg
{
	imagejpeg($destinationNormales, $dossierNormales.'/'.$nomDossier.'.'.$extension_upload, 85); //imagejpeg  ( resource $image  [, string $filename  [, int $quality (qualité de compression du jpeg, 100 etant la meilleur qualité)  ]] )
	imagejpeg($destinationVignettes, $dossierVignettes.'/'.$nomDossier.'.'.$extension_upload, 85); //imagejpeg  ( resource $image  [, string $filename  [, int $quality (qualité de compression du jpeg, 100 etant la meilleur qualité)  ]] )
	echo '<br />L\'envoi de l\'image1 à bien été effectué !';
}
elseif ($extension_upload == 'png') //sinon si mon image source est un png
{
	imagepng($destinationNormales, $dossierNormales.'/'.$nomDossier.'.'.$extension_upload, 8); //imagepng  ( resource $image  [, string $filename  [, int $quality (qualité de compression du png, de 0 (aucune compression) à 9 )  ]] )
	imagepng($destinationVignettes, $dossierVignettes.'/'.$nomDossier.'.'.$extension_upload, 8); //imagepng  ( resource $image  [, string $filename  [, int $quality (qualité de compression du png, de 0 (aucune compression) à 9 )  ]] )
	echo '<br />L\'envoi de l\'image1 à bien été effectué !';
}
elseif ($extension_upload == 'gif') //sinon si mon image source est un gif
{
	imagegif($destinationNormales, $dossierNormales.'/'.$idDossier.'.'.$extension_upload); //imagegif  ( resource $image  [, string $filename ] )
	imagegif($destinationVignettes, $dossierVignettes.'/'.$idDossier.'.'.$extension_upload); //imagegif  ( resource $image  [, string $filename ] )
	echo '<br />L\'envoi de l\'image1 à bien été effectué !';
}
?>
artichaudd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 14h46   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
Simplifie toi la vie en utilisant cette classe :
http://www.verot.net/php_class_upload.htm

ça devrait également résoudre ton problème de transparence
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 23h27   #3
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 874
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 874
Points : 1 361
Points : 1 361
salut,

déjà, le béa ba:
  • seuls png et gif parmi les formats que tu utilises supporte la transparence...
  • un regard à gd grace à google et ohhh miracle:lis ça (c'est dingue ce que la doc officielle contient quand on la lit non?)
  • un conseil, coté serveur n'enregistre que du png:
    • ça permet la transparence
    • ça facilite l'écriture des accès aux fichiers (toujours .png)
    • c'est le format qui permet le plus de truc avec gd...
question sécurité, tu n'en a pas vraiment dans ce que tu fais là... il ne faut jamis croire à l'extension...
utilise getimagesize pour récupérer les infos de taille et mimes de l'image... si elle échoue alors c'est pas une image...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h41.


 
 
 
 
Partenaires

Hébergement Web