Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 18/12/2011, 07h36   #1
Futur Membre du Club
 
Homme
Webmaster
Inscription : mars 2008
Messages : 32
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : mars 2008
Messages : 32
Points : 18
Points : 18
Par défaut [GD] Supprimer la transparence d'une image

Bonjour,

J'ai fouillé le net pour une réponse à ma question. J'ai appliqué toutes les solutions que j'ai pu trouvé, mais rien n'y fait.

J'ai des images en png avec un canal transparent.

Je les affiches sans soucis dans mes pages.

Toutefois, je désire maintenant créer un document pdf. J'ai donc besoin de supprimer cette transparence.

Voici mon code, qui n'est pas fonctionnel :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
function supAlpha($name)
{
        $photoJeu = imagecreatefrompng($name);
        list($larg,$haut)=getimagesize($name);
        $image = imagecreatetruecolor($larg,$haut); // Création d'une nouvelle image
        /*On remplit la miniature avec un blanc opaque*/
        imagealphablending($image, false);
        imagesavealpha($image,true);
        $blanc= imagecolorallocatealpha($image, 255, 255, 255, 127);
        imagefill($image,0,0,$blanc);
        imagecopymerge($image, $photoJeu, 0, 0, 0, 0, $larg,$haut,100);                                                                                      
        imagejpeg($image,"photos/$jeu.jpg");
        $monImage['nom']="photos/$jeu.jpg";
        $monImage['largeur']=$larg;
        $monImage['hauteur']=$haut;
        imagedestroy($photoJeu);
        imagedestroy($image);
        return $monImage;
}
Quoi que je fasse, ma transparence ce transforme en un noir tous moche.

Si quelqu'un avait une idée pour supprimer ce canal Alpha?

Merci d'avance.

Cordialement
Zuthos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 18h37   #2
Membre actif
 
Avatar de xess91
 
Homme
Inscription : octobre 2008
Messages : 407
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 407
Points : 160
Points : 160
Bonjour,

en partant du principe que vous n'avez pas à retailler votre image et qu'elle fait 100x100px:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
header ("Content-type: image/png");
 
$destination = imagecreate(100, 100);
$blanc = imagecolorallocate($destination, 255, 255, 255);
 
// On charge l'image
$source = imagecreatefrompng($imgPath); // L'image
 
//on cerserve le canal de transparence pour ne pas avoir un fond gris/noir
imagealphablending($source, false);
imagesavealpha($source,true);
imagealphablending($destination , false);
imagesavealpha($destination ,true);
 
// On met l'image dans l'image de destination crée en blanc
imagecopy($destination, $source, 0, 0, 0, 0, 100, 100);
 
// On affiche l'image de destination qui a été fusionnée avec l'image source
imagejpeg($destination);
J'ai pas testé mais ça devrait fonctionner .
xess91 est dé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 19h58.


 
 
 
 
Partenaires

Hébergement Web