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] Zone de transparence noire avec imagecreatefrompng()


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Par défaut [GD] Zone de transparence noire avec imagecreatefrompng()
    Bonjour,

    J'essaye de superposer 2 images png. Le fond des 2 images sont transparents.
    Lorsque je les mixe. Elles perdent leur transparence qui devient noire.
    Je suis débutant en maniement d'images via php. Qu'est-ce que j'ai pas fait ou mal fait ?
    Merci
    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
     
    $nom_image = 'entreprise_'.$nivo_evolution_entreprise;
     
    header ("Content-type: image/png");
    // image de destination est support.png
    $destination = imagecreatefrompng('./img/btm/ent/'.$nom_image.'.png');
     
    // On charge d'abord les images
    //chargement image 1
    $source = imagecreatefrompng('./uploads/ent/'.$mini_logo_entreprise);
     
    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);
     
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
     
    imagecopymerge($destination, $source, 4, 3, 0, 0, $largeur_source, $hauteur_source, 100);
     
    // On affiche l'image de destination qui a été fusionnée avec les 3 sources
    imagepng($destination);

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut
    slt,

    Je sais que ma réponse ne va te servir des masses, mais ton problème est du au canal alpha du png, qui n'est pas conservé...

    J'ai vu des scripts censés corriger ce problème, mais qui ne fonctionnent pas (encore ?) chez moi. PHP propose avec gd des méthode pour le gérer ce **** ce canal de *****

    Ce qui est sur, c'est que c'est un problème récurrent, y'a qu'à voir sur ce forum !
    Et chaque fois, personne n'a d'idée sur le problème (chaque fois 0 réponses).

    Donc, pour les pistes, éxplore la gestion du canal alpha en png avec gd.
    Je suis moi même sur le problème, donc, si tu trouves ou que tu trouves, on vient poster ici la soluce

    PS: Il me semble aussi, mais sans assurance, que les deux images doivent être en png (24b) avec un canal alpha.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut
    Petit chanceux !
    Je ne sais pas si tu cherches encore la solution, mais si ce n'est pas le cas, je suis certain que ça servira à d'autres ici !

    Voici un script, à adapter bien sur, qui fonctionne parfaitement.

    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
     
    <?php
    $img     = imagecreatefromjpeg('clio4.jpg');
    $wm        = imagecreatefrompng('txt.png');
     
    //Position du WM sur l'image finale
    $positionx = 0;
    $positiony = 0;
     
    //Calcul de la taille de l'image sur laquelle, on va placer le watermark (ou autre image)
    $largeurSrc = imagesx($img);
    $hauteurSrc = imagesy($img);
     
    //Calcul de l'image du watermark
    $largeurW = imagesx($wm);
    $hauteurW = imagesy($wm);
     
    //Si l'image source est plus large que celle du WM, on effectue la mise en place du WM
    if($largeurSrc > $largeurW)
    {
      # Création de l'image finale aux dimensions de l'image qui va accueillir le WM
      $final     = imagecreatetruecolor($largeurSrc,$hauteurSrc);
     
      # configuration du canal alpha pour le WM
      imagealphablending($wm,false);
      imagesavealpha($wm,true);
     
      # Création de l'image finale
      imagecopyresampled($final,$img,0,0,0,0,$largeurSrc,$hauteurSrc,$largeurSrc,$hauteurSrc);
      # Ajout du watermark
      imagecopyresampled($final,$wm,$positionx,$positiony,0,0,$largeurW,$hauteurW,$largeurW,$hauteurW);
      # Pour ajouter d'autre photo par dessus, procéder de la meme façon
     
      # affichage de l'image finale
      header("Content-type: image/png");
      imagepng($final);
    }
    ?>

Discussions similaires

  1. Bug d'affichage, zones noires avec VS2010
    Par chico200987 dans le forum Visual Studio
    Réponses: 2
    Dernier message: 17/05/2011, 15h34
  2. [Carte Graphique] Ecran Noir avec une Asus Extreme AX800/XL
    Par slowpoke dans le forum Composants
    Réponses: 2
    Dernier message: 06/10/2005, 19h45
  3. Réponses: 2
    Dernier message: 28/09/2005, 18h08
  4. Réponses: 5
    Dernier message: 06/09/2005, 03h50
  5. écran noir avec un shader d'éclairage au pixel près
    Par captainSeb dans le forum OpenGL
    Réponses: 2
    Dernier message: 16/05/2005, 13h30

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