Combiner deux images avec la librairie gd (png ou jpeg) avec transparence de l'image par dessus l'autre

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 077 fois - Téléchargée 35 fois

Contenu du snippet

Cette fonction (qui n'est pas de moi) est tres pratique pour fusioner deux images PNG ou JPEG, j'ai juste traduit les commentaires

Source / Exemple :


// La ligne de header informe le serveur sur le type de donnée transmises
  // Dans ce cas, il s'agit d'un fichier PNG
  // l'image est envoyée telle quelle

  header ("Content-type: image/png"); 

  // Definir l'image de fond. Une image JPEG peut etre utilisee avec la fonction
  // imagecreatefromjpeg

  $background = imagecreatefrompng("backgroundimage.png"); 

  // Definition de limage overlay qui sera incluse dans l image background

  $insert = imagecreatefrompng("overlay.png"); 

  // Selection du premier pixel de l image overlay (a la position 0,0) et utiliser
  // la couleur de ce pixel comme couleur transparente

  imagecolortransparent($insert,imagecolorat($insert,0,0));

  // Recuperation des dimensions de l'image

  $insert_x = imagesx($insert); 
  $insert_y = imagesy($insert); 

  // Combiner les images (la fonction imagcopy() peut marcher mais bug souvent)

  imagecopymerge($background,$insert,0,0,0,0,$insert_x,$insert_y,100); 

  // Envoyer le resultat au navigateur (note : l inclusion dans du HTML n'est pas obligatoire)
  imagepng($background,"",100);

A voir également

Ajouter un commentaire

Commentaires

pifou25
Messages postés
150
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014
-
super! mais ça veut dire quoi :
# Selection du premier pixel de l image overlay (a la position 0,0) et utiliser
# la couleur de ce pixel comme couleur transparente
suis je obligé de mettre la couleur transparente en 0, 0 pour que ça marche?? y'a pas une méthode générique pour obtenir la couleur de transparence?
capoueidiablo
Messages postés
316
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
1 février 2010
1 -
Cette fonction permet de fusionner deux images gif ayant toute deux une transparence et conserve cette dernière ...
  function mergeAlpha ($url, $logo) {
      /* on pourrait par exemple rendre ca un peu plus générique :
      $ext = strtolower(end(explode('.', $image_path)));
      if ($ext == "gif") on appel imagecreatefromgif
      if ($ext == "png") on appel imagecreatefrompng et ainsi de suite
      */
      $url  =  imagecreatefromgif ($url);
      $logo =  imagecreatefromgif ($logo);
  
      $bwidth  = imagesx($url);
      $bheight = imagesy($url);
      $lwidth  = imagesx($logo);
      $lheight = imagesy($logo);
      
      imagealphablending ($url, true);      
      imagecopy ($url, $logo, 0, 0 ,0 ,0 , $lwidth, $lheight);
      
      return $url;
  }
  
  /* how to call me */
  header ("Content-type: image/gif");
  imagegif (mergeAlpha ("1.gif", "un.gif") );
yakou32
Messages postés
33
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
3 avril 2015
-
Cool !

Sinon le 100 dans "imagecopymerge" c'est pour le niveau de transparence ? on peut fusionner en conservant la transparence de la permière ?
Magidev
Messages postés
249
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
28 août 2009
-
Lol :-)
cs_iubito
Messages postés
629
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
9 octobre 2006
-
hop, in ze favoris :-)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.