Bonjour à tous,

Pour me familiariser avec gd j'ai créé une petite fonction PHP qui permets de créer trois rectangles, puis je fusionne ces rectangles entre eux. Le script fonctionne parfaitement si je l'exécute tel quel, les 3 images sont crées puis fusionner entre elle. Mais pour éviter de devoir copier coller mon code à chaque fois, j'ai décidé de le mettre dans une fonction et la rien ne va plus.

Il m'affiche un texte incompréhensible :

‰PNG  ��� IHDR���d���d��� Œ}Ç��� PLTEþMÿ¬��ÿ9TŠa���%IDATH‰cX… 0ŒÊŒÊŒÊŒÊÐ[&A2£`Œ‚Q0h��DO>BƇç����IEND®B
J'ai donc penser à rajouter la ligne :

header ("Content-type: image/png");
Juste avant l'appel de ma fonction mais rien ne change.

Je vous poste donc mon code en espérant que vous pourrez m'aider.


L'appel de la fonction :

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
<div id='conteneurhisto'>
 
 
	<div id='histo1'>
	<?php 
        header ("Content-type: image/png");
	$image = creahistograme(); 
	imagepng($image);
	imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
	?>
 
	</div>
 
	<div id='histo2'>
 
	<?php  
	header ("Content-type: image/png");
	$image = creahistograme(); 
	imagepng($image);
	imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
	?>
 
	</div>
 
	<div id='histo3'>
 
	<?php  
	header ("Content-type: image/png");
	$image = creahistograme();
	imagepng($image);
	imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
						?>
 
	</div>
 
</div>
Et la fonction :

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
function creahistograme()
{
/*=====================================================================================================
							Nous travaillons avec des images de types png
 =====================================================================================================*/
header ("Content-type: image/png");
 
/*=====================================================================================================
							Declaration de la taille des images
 =====================================================================================================*/
 //Image 1
$imagex  = 100; 
$imagey  = 100;
 
//Image 2
$image2x = 100; 
$image2y = 55;
 
//Image 3
$image3x = 100; 
$image3y = 45;
 
/*=====================================================================================================
							Creation de la première image
 =====================================================================================================*/
$image = imagecreate($imagex,$imagey);
$rouge = imagecolorallocate($image, 254, 77, 1);
//imagepng($image);
 
/*=====================================================================================================
							Creation de la deuxième image
 =====================================================================================================*/
$image2 = imagecreate($image2x,$image2y);
$orange = imagecolorallocate($image2, 255, 172, 0);
//imagepng($image2);
 
/*=====================================================================================================
							Creation de la troisième image
 =====================================================================================================*/
$image3 = imagecreate($image3x,$image3y);
$vert   = imagecolorallocate($image3, 0, 255, 57);
//imagepng($image3);
 
/*=====================================================================================================
							On mesure les images
 =====================================================================================================*/
 //image 1
$largeur_source       = $imagex;
$hauteur_source       = $imagey;
 
//image 2
$largeur_destination2 = $image2x;
$hauteur_destination2 = $image2y;
 
//image 3
$largeur_destination3 = $image3x;
$hauteur_destination3 = $image3y;
 
/*=====================================================================================================
					Placement de l'image pour l'image 1 et 2
 =====================================================================================================*/
$destination_x = $largeur_destination2 - $largeur_source;
$destination_y =  $hauteur_destination2 - $hauteur_source;
 
/*=====================================================================================================
			Fusion de l'image 1 et 2  et creation de la premiere image fusionné
 =====================================================================================================*/
imagecopymerge($image, $image2, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 100);
 
/*=====================================================================================================
					Placement de l'image pour fusionné et  l'image 3
 =====================================================================================================*/
$destination_x2 = $largeur_destination3 - $largeur_source;
$destination_y2 =  $hauteur_destination3 - $hauteur_source;
 
/*=====================================================================================================
				Fusion de l'image fusionné avec l'image 3 
 =====================================================================================================*/
imagecopymerge($image, $image3, $destination_x2, $destination_y2, 0, 0, $largeur_source, $hauteur_source, 100);
 
/*=====================================================================================================
							Affichage
 =====================================================================================================*/
return $image;
}
J'ai déjà tester le return imagepng($image); sans succès.

Cordialement Crazymonkey.

Solution :

Écrire le code dans une page indépendante que l'on appellera de cette manière :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<img src="nom_du_fichier.php">
Merci à Djakisback pour son aide.