IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[GD] Problème affichage couleur


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 70
    Points : 44
    Points
    44
    Par défaut [GD] Problème affichage couleur
    Bonjour,

    J'ai un soucis incompréhensible pour moi...

    Je génère une image qui à un fond bleu, je lui rajoute une image grâce à imagecreatefrompng, un titre et une zone verte dans laquelle je place du texte. Pour une seule image png, j'arrive à avoir le résultat voulu. Avec d'autres images, mon bleu et mon vert... Et bien ne le sont plus ! Et mon image ne garde pas ses couleurs de base non plus. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php
    //Création des images
    	$fond = imagecreate(194, 309);
    	$image = imagecreatefrompng("imgdefaut.png");
    	$zone_image = imagecreate(168, 107);
    	$titre = imagecreate(194, 50);
    	$desc = imagecreate(167, 114);
    	$son = imagecreatefrompng("son04.png");
    	$im = imagecreatefrompng("image04.png");
    	$video = imagecreatefrompng("video04.png");
    	$anim = imagecreatefrompng("animation04.png");
     
    	$bleu = imagecolorallocate($fond, 154, 182, 222);
     
    	$transp = imagecolorallocate($zone_image, 154, 182, 222);
    	imagecolortransparent($zone_image, $transp);
    	$transp2 = imagecolorallocate($titre, 22,22,22);
    	$noir = imagecolorallocate($titre, 0,0,0);
    	imagecolortransparent($titre, $transp2);
    	$vert = imagecolorallocate($desc, 178, 175, 20);
    	$noir2 = imagecolorallocate($desc, 0,0,0);
     
    	if((imagesx($image) > imagesy($image)) && (imagesx($image) >= imagesx($zone_image))) {
    		$hauteur = imagesx($zone_image) * imagesy($image) / imagesx($image);
    		imagecopyresampled($zone_image, $image, 0, 0, 0, 0, imagesx($zone_image), $hauteur, imagesx($image), imagesy($image));
    		$y = ((imagesy($zone_image) - $hauteur) / 2) + 11;
    		imagecopymerge($fond, $zone_image, 13, $y, 0, 0, imagesx($zone_image), imagesy($zone_image), 100);
    	}
    	if((imagesx($image) <= imagesy($image)) && (imagesy($image) >= imagesy($zone_image))) {
    		$largeur = imagesy($zone_image) * imagesx($image) / imagesy($image);
    		imagecopyresampled($zone_image, $image, 0, 0, 0, 0, $largeur, imagesy($zone_image), imagesx($image), imagesy($image));
    		$x = ((imagesx($zone_image) - $largeur) / 2) + 13;
    		imagecopymerge($fond, $zone_image, $x, 11, 0, 0, imagesx($zone_image), imagesy($zone_image), 100);
    	}
    	if((imagesy($image) <= imagesy($zone_image)) && (imagesy($image) <= imagesy($zone_image)))
    		imagecopymerge($fond, $image, 13, 11, 0, 0, imagesx($image), imagesy($image), 100);
     
    	$bbox = imageftbbox(15, 0, "GOTHIC.ttf", 'Kalimucho');
    	$x = $bbox[0] + (imagesx($titre) / 2) - ($bbox[4] / 2) - 5;
    	$y = $bbox[1] + (imagesy($titre) / 2) - ($bbox[5] / 2) - 5;
    	imagefttext($titre, 15, 0, $x, $y, $noir, "GOTHIC.ttf" , 'Kalimucho');
    	imagecopymerge($fond, $titre, 0, 115, 0, 0, imagesx($titre), imagesy($titre), 100);
     
    	//Max 25 caractères par ligne (espaces inclus !)
    	$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean suscipit suscipit elementum. Praesent id tortor dui, in aliquam quam. Nunc sed nibh in odio faucibus consectetur in commodo felis. Proin vitae risus id risus lobortis posuere sit amet non velit. Fusce velit libero, posuere ac volutpat id, commodo et massa. Maecenas accumsan mattis interdum. Integer dapibus scelerisque congue. Nam est velit, condimentum in convallis ac, egestas at dui. Fusce orci metus, malesuada nec sagittis nec, fringilla sed tellus. Duis et massa dolor, nec volutpat nibh.";
    	$newtext = wordwrap($text, 33, "\n");
    	imagefttext($desc, 8, 0, 0, 20, $noir2, "arial.ttf", $newtext); 
    	imagecopymerge($fond, $desc, 12, 153, -5, 4, imagesx($desc), imagesy($desc), 100);
     
    	ImageRectangle ($fond, 12, 153, 179, 266, $noir2);
     
    	imagecopymerge($fond, $son, 47, 273, 0, 0, imagesx($son), imagesy($son), 100);
    	imagecopymerge($fond, $im, 84, 272, 0, 0, imagesx($im), imagesy($im), 100);
    	imagecopymerge($fond, $video, 120, 274, 0, 0, imagesx($video), imagesy($video), 100);
    	imagecopymerge($fond, $anim, 150, 271, 0, 0, imagesx($anim), imagesy($anim), 100);
     
    	ImageRectangle ($fond, 0, 0, 193, 308, $noir2);
     
    	imagepng($fond, "result.png");
    ?>
    Si vous pouviez m'aider svp. Merci

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fond = imagecreate(194, 309);
    Cela crée une image à palette. Sais-tu combien de couleurs max peut contenir la palette PNG ?

    Pour commencer je ferais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fond = imagecreatetruecolor(194, 309);
    Ensuite, avec une image TrueColor, il faudra remplir le fond toi-même avec imagefill( ).
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 70
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup !

    Je ne savais pas qu'il y avait un nombre maximum de couleur pour une image en png. C'est bon à savoir !

    Du coup j'ai fais la même chose pour mon image, qui mettait en blanc les partie normalement invisible et qui changeait les couleurs de celle-ci. Et ça marche nickel !

    Encore merci pour ta rapidité et ta réponse

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Je ne savais pas qu'il y avait un nombre maximum de couleur pour une image en png.
    En mode palette, oui.

    A+
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème affichage couleur heatmap
    Par colapili dans le forum Général Python
    Réponses: 0
    Dernier message: 11/02/2019, 10h56
  2. Problème code pour affichage couleurs
    Par CPIEAlban dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/01/2017, 14h41
  3. Affichage des KMLs - Problèmes de couleurs
    Par AMAPE dans le forum IGN API Géoportail
    Réponses: 13
    Dernier message: 04/01/2013, 20h33
  4. Problème d'affichage Couleur de fond
    Par Dan972 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/08/2012, 12h18
  5. [DOS] Problème affichage de DOS dans un Memo
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 25/06/2004, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo