[RESOLU] Besoin d'aide : Superposition d'images format png

Eléphant du PHP | 71 Messages

20 mai 2014, 11:24

Bonjour à tous.

Je suis actuellement en stage (BTS SIO 1er année) , et je dois trouver un moyen de superposer 2 images png.

Voici mon code :
<?php
 
	// Traitement de l'image source
	$source = imagecreatefrompng("img/test/yeux1.png");
	$largeur_source = imagesx($source);
	$hauteur_source = imagesy($source);
		
	// Traitement de l'image destination		
	$destination = imagecreatefrompng("img/test/cravate1.png");
	$largeur_destination = imagesx($destination);
	$hauteur_destination = imagesy($destination);
	
	// On place l'image source dans l'image de destination
	imagecopy($destination, $source, 0, 0, 0, 0, $largeur_source, $hauteur_source);

	// On affiche la nouvelle image de destination
	imagepng($destination);
?>
Le problème est que je fini toujours par tomber sur cette page : (elle est rognée car elle prend trop de place et ne rentre pas dans les pieces jointes entière)
erreur.png
J'ai beau chercher sur des forums, je n'arrive pas à obtenir le résultat que je voudrais
Merci d'avance pour ceux qui pourrons m'aider :)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

ViPHP
ViPHP | 3607 Messages

20 mai 2014, 11:38

Bonjour,

A priori il te manque le header "content-type".
Regarde dans les exemples de la doc php, il est présent à chaque fois il me semble.

Petit autre point éventuellement, évite de fermer le balise php en fin de fichier (?>)
Car on dirait que tu as un saut de ligne de trop dans ton php, ce qui peut éventuellement compromettre le fichier png généré.

Bon courage,

Cordialement,

Eléphant du PHP | 71 Messages

20 mai 2014, 11:56

A priori il te manque le header "content-type".
Regarde dans les exemples de la doc php, il est présent à chaque fois il me semble.
J'y ait pensé aussi mais il me propose de télécharger le fichier.php en le mettant ^^
Après, j'avouerais que je vois pas trop à quoi il sert :/
        // On place l'image source dans l'image de destination
	imagecopy($destination, $source, 0, 0, 0, 0, $largeur_source, $hauteur_source);
	// On affiche l'image de destination
	header('Content-Type: img/png');
	imagepng($destination);
Voila la fenetre que j'obtiens en rafraichissant la page, peu importe le contenu du "Content-Type" :
dl.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

ViPHP
ViPHP | 3607 Messages

20 mai 2014, 12:03

Bonjour,

Le content-type n'est aps bon ;)
http://php.net/manual/en/image.examples-png.php

Eléphant du PHP | 71 Messages

20 mai 2014, 12:09

Bonjour,

Le content-type n'est aps bon ;)
http://php.net/manual/en/image.examples-png.php
Une nouvelle erreur à été trouvée x)
erreur2.png
En tous cas merci pour ton aide :D

EDIT : J'arrive pas à trouver l'erreur :cry: aidez-moi pls
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Eléphant du PHP | 170 Messages

23 mai 2014, 11:09

Bonjour,

ça ne répond surement pas à tes problèmes, mais je trouve que c'est osé de nommer un fichier php "test superposition d'images.php"
(espaces, apostrophe ou autres grigris, en général on évite)

ViPHP
ViPHP | 3607 Messages

23 mai 2014, 11:32

Bonjour,

Si firefox indique ce message, c'est déjà qu'il reconnait correctement le header php.
Maintenant il doit s'agir d'une erreur affichée dans le script php qui corromp la source du png.
Il faut donc temporairement commenter le header(), et vérifier qu'il n'y a pas d'erreurs dans le code php.
Et rester ensuite en décommentant le header().

Bon debug !

Eléphant du PHP | 71 Messages

23 mai 2014, 11:48

J'ai résolu mon problème ^^

Il fallait que je crée un nouveau fichier qui contiens une balise image appelant le php :
<!DOCTYPE html>
<html lang="fr">
<html>

  <head>
    <title>Superpositions d'images</title>
    <meta charset="utf-8"> 
     <link rel="stylesheet" href="design.css">
     <link href="http://localhost/davy/img/personne0.png" rel="icon" </></link>
  </head>
  <body>
		<img src="image.php" />
  </body>

</html>