Collage images transparentes avec librairie GD
chamagne
-
chamagne Messages postés 9 Statut Membre -
chamagne Messages postés 9 Statut Membre -
Bonjour,
Ca fait des jours que je coince et en appelle à votre sagacité.
J'essaie d'accoler 2 images transparente (png), de même hauteur, alignées à la base.
C'est OK et vérifié jusqu'à l'utilisation de GD.
Mon code que j'ai bien commenté pour compréhension :
Merci de votre aide
Ca fait des jours que je coince et en appelle à votre sagacité.
J'essaie d'accoler 2 images transparente (png), de même hauteur, alignées à la base.
C'est OK et vérifié jusqu'à l'utilisation de GD.
Mon code que j'ai bien commenté pour compréhension :
<?php
// Images des carateres de la police toutes transparentes et de même hauteur
// Toutes images dans le répertoire courant - Image résultante dans répertoire temporaire
function merge($data, $interval)
{
// INITIALISATIONS
$result = "/temp/".$data.".png";
$images = array();
$letters = array();
$width = array();
$x_init = array();
$width_result = 0;
// DECOUPAGE DE L'ENTREE EN CARACTERES IMAGES UNIQUES
$nb = strlen($data);
for ($i=0; $i<$nb; $i++) $letters[$i] = substr($data, $i, 1).'.png';
// CALCUL POSITION ET LARGEUR DE CHAQUE IMAGE ET DES DIMENSIONS DE L'IMAGE FINALE
$i = 0;
foreach($letters as $value)
{
$x_init[$i] = array_sum($width) + ($i * $interval);
$size = getimagesize($value);
array_push($width, $size[0]);
$i++;
}
$height = $size[1]; // toutes les images sont de même hauteur
$width_result = array_sum($width) + ($nb * $interval);
// CREATION IMAGE FINALE VIDE ET TRANSPARENTE
$empty = imagecreatetruecolor($width_result, $height);
imagealphablending($empty, false);
imagesavealpha($empty, true);
$trans_colour = imagecolorallocatealpha($empty, 0, 0, 0, 127);
imagefill($empty, 0, 0, $trans_colour);
// POUR CHAQUE LETTRE DU MOT/PHRASE
for ($i=0; $i<$nb; $i++)
{
// Création
$images[$i] = imagecreatefrompng($letters[$i]);
// Copie dans l'image finale
imagecopy($empty, $images[$i], $x_init[$i], 0, 0, 0, $width[$i], $height);
}
// CREATION IMAGE FINALE
imagepng($empty, $result);
// NETTOYAGE
imagedestroy($empty);
for ($i=0; $i<$nb; $i++) imagedestroy($images[$i]);
}
// LANCEMENT COLLAGE ET AFFICHAGE IMAGE RESULTANTE
$data = "exemple"; // texte à traduire en image avec la police graphique
$interval = 5; // espace à droite de chaque caractère du texte
merge($data, $interval);
echo '<img src="".$data.'.png">';
?>
Merci de votre aide
| EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Collage images transparentes avec librairie GD
- Des images - Guide
- Pic collage gratuit - Télécharger - Photo & Graphisme
- Superposer deux images transparence ✓ - Forum Graphisme
- Gd group prélèvement - Forum Consommation & Internet
- Images enregistrées ✓ - Forum Bluetooth
3 réponses
Bon je sais pas si il y a une erreur au niveau de la lib GD mais ton echo n'est pas bon:
Essaye ça
echo '<img src="".$data.'.png">';
Essaye ça
echo '<img src="'.$data.'.png">';
Bonjour
Curieux ça, je n'ai pas cette erreur chez moi et ai fait un copier-coller;
De toutes les façons, je pense que php n'aurait pas apprécié et m'aurait envoyé balader.
@+
Curieux ça, je n'ai pas cette erreur chez moi et ai fait un copier-coller;
De toutes les façons, je pense que php n'aurait pas apprécié et m'aurait envoyé balader.
@+
C'est réglé !
1ère modif : remplacer /temp par temp
2ème modif : changer
par
Mise en oeuvre sur http://www.geologues-prospecteurs.fr/alphabets/cristaux/
(reste un petit pb avec le signe euro à ne pas utiliser)
1ère modif : remplacer /temp par temp
2ème modif : changer
imagefill($empty, 0, 0, $trans_colour);
par
imagefilledrectangle($empty, 0, 0, $width_result, $height, $trans_colour);
imagealphablending($empty, true);
Mise en oeuvre sur http://www.geologues-prospecteurs.fr/alphabets/cristaux/
(reste un petit pb avec le signe euro à ne pas utiliser)