[php] probleme d'affichage avec imagecreate

Fermé
28_seb Messages postés 84 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 31 mai 2010 - 23 mai 2008 à 22:36
 FloFlo - 16 déc. 2008 à 17:05
Bonjour,

j'ai un problème d'affichage en utilisant imagecreate ou imagecreatetruecolor :

mon code :

$img_handle = ImageCreate (60, 20) or die ("Impossible de créer l\'image");
//Image size (x,y)
$back_color = ImageColorAllocate($img_handle, 255, 0, 0);
//Background color RBG
$txt_color = ImageColorAllocate($img_handle, 45, 23, 76);
//Texte Couleur RBG
ImageString($img_handle, 31, 5, 0, "coucou", $txt_color);
Imagepng($img_handle);

Si je mets ce code (tout seul) dans une page php, il fonctionne.

Si je l'inclu dans une page php ayant un autre code, cela ne fonctionne plus, j'ai cela qui s'affiche :

‰PNG  ��� IHDR���<������ëÍÌj���PLTEÿ��-L ßN���]IDAT™c`ÀÛêêíÀŒÃÌÀŒ ›ä϶l †„ä¶: 6 ÃmÌv @Fâ6fcãà?æÃfËÆs‡€Šoþd°H@-`þ€×~ì��·r"œk]U����IEND®B`‚

J'ai essayé de mettre header("Content-type: image/png"); mais ça ne marche toujours pas.


Merci pour votre solution.
A voir également:

3 réponses

Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
24 mai 2008 à 04:41
Peut-on avoir le code contenu dans la page en question ?
0
28_seb Messages postés 84 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 31 mai 2010 11
25 mai 2008 à 11:07
Bonjour,

Mon code est un peu long, il n'est pas encore optimale quelque truc a corriger mais ca ne gene pas le code.
Il permet de uploader des fichiers vers mon serveur, tout simple, j'essaie de mettre une capcha mais ca plante.

Merci

<?
session_start();
?>
<HTML>
<HEAD>
<Link rel="STYLESHEET" type="text/css" href="./cadre.css">
<TITLE>Retouche d'image</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" class=texte>
<table cellpadding=0 cellspacing=0 class=tablo width=100%>
<tr>
<td class=tablo-titre><span class=texte-titre>Redimension d'une image</span></td>
</tr>
<tr>
<td align="center">
<ul style="list-style-type:none;margin-left:0;">
<BR>
<DIV ALIGN="CENTER">
<TABLE BORDER="0" CELLPADDING="2" CELLSPACING="0" class="tabletour" WIDTH="600">
<TR BGCOLOR="#005bc2"><TD class="txtcolonnebleue" COLSPAN="2"> A quoi sert cet outil ?</TD></TR>
<TR><TD VALIGN="TOP"> 1.</TD><TD VALIGN="TOP"><B>redimensionner vos photos</B> afin qu'elles soient d'une taille raisonnable pour une plus grande rapidité d'affichage, et pour une meilleure visibilité.</TD></TR>
<TR><TD VALIGN="TOP"> 2.</TD><TD VALIGN="TOP">Le cas échéant, <B>à faire pivoter vos photos</B> si elles ne sont pas dans le bon sens.<br></TD></TR>
<TR><TD VALIGN="TOP"><font color="#FF0000">    NB- </font></TD><TD VALIGN="TOP"><font color="#FF0000"><B>Les formats acceptés sont : jpg, jpeg et gif, votre image initiale doit avoir un poids inférieur à 2 Mo.</B></font></TD></TR>
<TR BGCOLOR="#005bc2"><TD class="txtcolonnebleue" COLSPAN="2"> Le principe</TD></TR>
<TR><TD VALIGN="TOP" COLSPAN="2">Via le formulaire ci-dessous, vous envoyez votre photo sur notre serveur. Si elle est trop grande, elle est automatiquement redimensionnée.<BR><br>Si nécessaire, vous la faites pivoter. Il ne vous reste plus qu'à cliquer (clic droit) sur la photo pour l'enregistrer sur votre disque dur afin de pouvoir la télécharger ensuite.</TD></TR>
</TABLE>
<BR>
<?php
$string = "abcdefghijklmnopqrstuvwxyz0123456789AZERTYUIOPQSDFGHJKLMWXCVBN";
for($i=0;$i<6;$i++){
$pos = rand(0,62);
$str .= $string{$pos};
}

$img_handle = imagecreatetruecolor (60, 20) or die ("Impossible de créer l\'image");
//Image size (x,y)
$back_color = ImageColorAllocate($img_handle, 255, 0, 0);
//Background color RBG
$txt_color = ImageColorAllocate($img_handle, 45, 23, 76);
//Texte Couleur RBG
ImageString($img_handle, 31, 5, 0, $str, $txt_color);
Imagepng($img_handle);
?>

<BR>
<?php
if($_GET['id']==90) $_SESSION['operation']= 90;
if($_GET['id']==270) $_SESSION['operation']= 270;
if($_GET['id']==180) $_SESSION['operation']= 180;
if(isset($_SESSION["operation"])){
$ok="ok";
}
//paramètre
$extensions_ok = array('gif', 'GIF', 'jpg', 'JPG', 'jpeg', 'JPEG');
$dossier_fic = "./photo/"; // dossier où sont stockées les photos à traiter
$dest_dossier = '????photo/'; // le dossier où les photos sont stockées
$taille_max = 8000000; // en octet

// series de test pour vérifier si le fichier est correct
if((isset($_FILES['photo'])) AND (in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ))
AND ($_FILES['photo']['error'] == 0) AND ($_FILES['photo']['size'] <= $taille_max)){
$ext = substr(strrchr($_FILES['photo']['name'], "."), 1 );
if($ext==jpg) $ext=jpeg;
$ext = substr(strrchr($_FILES['photo']['name'], "."), 1 ); // recupere l'extension du fichier
$ext = strtolower($ext);
$dest_fichier = time().".".$ext; // permet de renommer le fichier
$_SESSION['fic'] = $dest_fichier; //met le nom du fichier dans une session pour pouvoir s'en servir après
// transférer l'image du répertoire temporaire vers un répertoire de destination
$envoi = move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier.$dest_fichier);

if ($envoi) {
$image = $dossier_fic.$dest_fichier;
if (!isset($_GET["operation"])){
$ext = substr(strrchr($_SESSION['fic'], "."), 1 );
$ext = strtolower($ext);
switch ($ext) {
case "jpg":
$chemin = imagecreatefromjpeg($image);
break;
case "jpeg":
$chemin = imagecreatefromjpeg($image);
break;
case "gif":
$chemin = ImageCreateFromgif($image);
break;
case "png":
$chemin = ImageCreateFrompng($image);
break;
}
if (!$chemin) return "Erreur : Lecture impossible de l'image ".$source." !";
// prend la taille de l'image
$dimension=getimagesize($image);
$src_w = $dimension[0];
$src_h = $dimension[1];
// superieur à 500 dans l'exemple
//if($dimension[0]>500){
$dst_w = $_POST['dim']; //480;
// Contraint le rééchantillonage à une largeur fixe
// Maintient le ratio de l'image
$dst_h = round(($dst_w / $src_w) * $src_h);
$nouvelle = ImageCreateTrueColor($dst_w,$dst_h);
if (!$nouvelle) return "Erreur : Buffer non créé : ";
//imagecopyresampled($nouvelle,$chemin,0,0,0,0,$dst_w,$dst_h,$dimension[0],$dimension[1]);
ImageCopyResampled($nouvelle,$chemin,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);

switch ($ext) {
case "jpg":
imagejpeg($nouvelle,$image);
break;
case "jpeg":
imagejpeg($nouvelle,$image);
break;
case "gif":
Imagegif($nouvelle,$image);
break;
case "png":
Imagepng($nouvelle,$image);
break;
}
imagedestroy ($chemin); <---- c'est ici que ça plante, ça affiche les caractère de mon premier message
}
}
else return "une erreur est survenue";
}// fin des tests
else if ($_FILES['photo']['error']) { // vérifie si il y a eu une erreur pendant le transfert
switch ($_FILES['photo']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo "Le fichier dépasse la limite autorisée par le serveur !";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert !";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle !";
break;
}
exit;
}

if (isset($ok)) {
$image = $dossier_fic.$_SESSION['fic'];
$ext = substr(strrchr($_SESSION['fic'], "."), 1 );
$ext = strtolower($ext);
switch ($ext) {
case "jpg":
$im = imagecreatefromjpeg($image);
break;
case "jpeg":
$im = imagecreatefromjpeg($image);
break;
case "gif":
$im = ImageCreateFromgif($image);
break;
case "png":
$im = ImageCreateFrompng($image);
break;
}
//$chemin = imagecreatefromjpeg($image);
//$im = imagecreatefromjpeg($image);
//$pixels = getimagesize($image);
switch ($_SESSION["operation"]) {
case "90":
$im = ImageRotate($im, 90, 0);
break;
case "270":
$im = ImageRotate($im, -90, 0);
break;
case "180":
$im = ImageRotate($im, 180, 0);
break;
}
switch ($ext) {
case "jpg":
imagejpeg($im,$image);
break;
case "jpeg":
imagejpeg($im,$image);
break;
case "gif":
Imagegif($im,$image);
break;
case "png":
Imagepng($im,$image);
break;
}
//imagejpeg($im,$image);
imagedestroy ($im);
}
if ((isset($_FILES['photo'])) OR (isset($ok))) {
if (in_array( substr(strrchr($_SESSION['fic'], '.'), 1), $extensions_ok )){
echo '<BR>La photo a été redimensionnée automatiquement.';
echo '<BR><b>Enregistrer l\'image :</b> Clic droit sur l\'image et choisissez "Enregistrer l\'image sous"<br><br>';
echo "<IMG SRC=$image?rand=".time().">";

echo "<BR><BR><BR>Si nécessaire, vous pouvez faire pivoter votre photo. <BR>";
echo "cliquez alors sur les symboles suivants. <BR>";
echo "<A HREF=\"?id=90\"><IMG SRC=\"img/gauche.gif\" WIDTH=\"60\" HEIGHT=\"60\" BORDER=\"0\" ALT=\"Pivoter l'image de 90 degrés vers la gauche.\"></A>";
echo "  ";
echo "<A HREF=\"?id=270\"><IMG SRC=\"img/droite.gif\" WIDTH=\"60\" HEIGHT=\"60\" BORDER=\"0\" ALT=\"Pivoter l'image de 90 degrés vers la droite.\"></A>";
echo "  ";
echo "<A HREF=\"?id=180\"><IMG SRC=\"img/inverse.gif\" WIDTH=\"60\" HEIGHT=\"60\" BORDER=\"0\" ALT=\"Pivoter l'image de 180 degrés.\"></A>";
echo " <BR><BR>";
echo "<span class=texte-titre><a class=\"lien\" href=\"upload.php\">Traiter une autre photo</a></span><BR><br>";
}
}
session_unregister('operation');

if (!isset($_POST['MAX_FILE_SIZE']) AND (!isset($ok))){
echo "
<FORM ACTION=\"upload.php\" METHOD=\"POST\" NAME=\"FORM_RETOUCHE\" ENCTYPE=\"MULTIPART/FORM-DATA\">
<INPUT TYPE=\"HIDDEN\" name=\"MAX_FILE_SIZE\" value=\"8000000\">
Choisissez une dimension :
<br>480x360pi : <INPUT type=radio name=\"dim\" value=\"480\" checked>
<br>600x450pi : <INPUT type=radio name=\"dim\" value=\"600\"><br><br>
<INPUT TYPE=\"FILE\" NAME=\"photo\">
<INPUT TYPE=\"SUBMIT\" VALUE=\"Envoyer la photo à traiter\" Onclick=\"this.value='Traitement en cours !!! Patientez SVP'\">
<BR><BR>
Note : l'image qui se trouve sur votre disque dur ne sera pas modifiée.
</FORM>
</DIV>
<ul>";
}
?>
</td>
</tr>
</table>
</BODY>
</HTML>
0
28_seb Messages postés 84 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 31 mai 2010 11
27 mai 2008 à 10:04
Bonjour,

Quelqu'un aurait une idée, car je suis bloqué.

Merci beaucoup.
0
C'est un peu tard, mais cela servira aux suivants...

Il faut insérer la balise image dans ton code en donnant pour source le chemin du fichier PHP qui génère l'image :
<img src="chemin_de_ton_fichier.php" />
0