Imagejpeg

Messages postés
33
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
28 novembre 2005
- - Dernière réponse : cs_jerame
Messages postés
33
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
28 novembre 2005
- 21 nov. 2004 à 20:10
Bonjour à tous,

J'ai des images stockées sur mon serveur, et je souhaiterais les afficher en les redimensionnant.

J'utilise le code suivant :

header("Content-type: image/jpeg");
$src_im = ImageCreateFromJpeg("Images/14.jpg");
$src_w = imageSX($src_im);
$src_h = imageSY($src_im);
$dst_w = floor($src_w * 0.5);
$dst_h = floor($src_h * 0.5);
// ImageCreateTrueColor crée une image noire en vraie couleurs
$dst_im = ImageCreate($dst_w,$dst_h);
// ImageCopyResampled copie et rééchantillonne l'image originale
ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
// ImageJpeg génère l'image dans la sortie standard (c.à.d le navigateur).
//Le second paramètre est optionnel ; dans ce cas, l'image est générée dans un fichier
ImageJpeg($dst_im);

Mon problème, c'est que le navigateur ne m'affiche pas l'image, mais des symboles qui n'ont rien à voir avec la choucroute.
Alors que si je redirige l'image dans un dossier en faisant : ImageJpeg($dst_im, "dest/dest.jpg");
Je retrouve bien mon image.

D'où vient le problème please ?
De ma version de php V4.3.3 sous easyPhp 1.7 ?
De mon Code ?

Merci de votre réponse.
Afficher la suite 

16 réponses

Messages postés
20
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
28 janvier 2005
0
Merci
Salut,

Essai :
$dst_im = imagecreatetruecolor($dst_w,$dst_h);
à la place de :
$dst_im = ImageCreate($dst_w,$dst_h);

Chez moi, ton code fonctionne.

courage.
Commenter la réponse de mixo11
Messages postés
33
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
28 novembre 2005
0
Merci
Salut mixo11,

J'ai déjà essayé imagecreatetruecolor, ca ne marche pas non plus. Les 2 codes me génère des symboles du style :
carre rond!*& etc ...

Je pense que je ne suis pas loin d'obtenir l'affichage de l'image, mais je sèche :(

Est ce que ca peut provenir de la version de windobe ?

En tout cas merci pour ta réponse ultra rapide ! :)
Commenter la réponse de cs_jerame
Messages postés
20
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
28 janvier 2005
0
Merci
J'ai Windows XP , Easy PHP ... tout comme toi je pense, chez moi cela fonctionne.
Je viens de tester sous Mozilla et Internet Explorer, cela refonctionne.

tu as essayé :
imagecopyresized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
à la place de :
ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);

ca vient peut etre de la lib GD. Laquelle as tu ? Si c'est la 2, tout devrait etre bon, si c'est la 1.8, je sais que certaines fonctions gèrent mal.



--
"Marco mal se pasejo"
Commenter la réponse de mixo11
Messages postés
33
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
28 novembre 2005
0
Merci
HOULA,
alors là, je rame ;)
j'ai essayé imagecopyresized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
et ca ne marche pas!!
pourquoi ca marche chez toi est pas chez moi ????
Commenter la réponse de cs_jerame
Messages postés
33
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
28 novembre 2005
0
Merci
Petite precision, j'utilise des variables de sessions, est ce que ca peut venir de là ?
Je ne pense pas quand même.
Commenter la réponse de cs_jerame
Messages postés
23
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
4 décembre 2004
0
Merci
bonjour,
si tu les redimensionne dynamiquement, le serveur risque de souffrir ...

tu devrais creer des miniatures et les afficher au lieu de les creer dynamiquement

enfin c'etait qu'un conseil
Commenter la réponse de darkkat
Messages postés
33
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
28 novembre 2005
0
Merci
Merci darkkat,
mais ça ne reoud pas mon probleme, pourquoi pas d'affichage ?

Pour afficher l'image, dois je faire ?
Commenter la réponse de cs_jerame
Messages postés
20
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
28 janvier 2005
0
Merci
Non la fonction va sur la sortie standard donc sur l'explorateur ,
tu as eu le message que je t'ai envoyé ?
++

--
"Marco mal se pasejo"
Commenter la réponse de mixo11
Messages postés
33
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
28 novembre 2005
0
Merci
Dernière tentative :
voici mon code :

<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<?php
include_once ("PHP/Upload.php") ;
echo formFichier("test.php","") ;
if($_POST['sendFile']=='Envoyer' )
{
//ici à l'aide d'un formulaire, j'upload l'image sur le serveur et je renvoie un message d'erreur
$test=new UploadImage("Images/") ;
echo $test->getMessageTransf() ;
}
//******************************************//
// afichage des images en taille reduites //
//******************************************//
// pour le test, je vais chercher l'image que j'ai uploader pour l'aficher reduite dans les dimension et taille voulue
// on declare qu'on va creer une image
header("Content-type: image/jpeg");
$src_im = ImageCreateFromJpeg("Images/14.jpg");
$src_w = imageSX($src_im);
$src_h = imageSY($src_im);
$dst_w = floor($src_w * 0.5);
$dst_h = floor($src_h * 0.5);
// ImageCreateTrueColor crée une image noire en vraie couleurs
$dst_im = imagecreatetruecolor($dst_w,$dst_h);
// ImageCopyResampled copie et rééchantillonne l'image originale
imagecopyresized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
// ImageJpeg génère l'image dans la sortie standard (c.à.d le navigateur).
// Le second paramètre est optionnel ; dans ce cas, l'image est générée dans un fichier
imagejpeg($dst_im);
imagedestroy($dst_im) ;
?>

</html>
Commenter la réponse de cs_jerame
Messages postés
23
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
4 décembre 2004
0
Merci
- on pourrait avoir le code du fichier inclut stp
- le header au milieu de la page c'est pas bon ! il doit etre au tout debut ou alors pour ici ne le met pas !
- jai testé le code en le modifiant (en enlevant le code que je ne pouvais pas executer, cad le fichier a inclure) et je suis aussi tombe sur une suite de chiffre, lettres et cie

ton code modifie pour pouvoir etre lancé :
<?php
$src_im = ImageCreateFromJpeg("Images/14.jpg");
$src_w = imageSX($src_im);
$src_h = imageSY($src_im);
$dst_w = floor($src_w * 0.5);
$dst_h = floor($src_h * 0.5);
$dst_im = imagecreatetruecolor($dst_w,$dst_h);
imagecopyresized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
imagejpeg($dst_im);
imagedestroy($dst_im) ;
?>
> marche pas !

ma versoin de ton code :
<?php
header("Content-type: image/jpeg");
$img_src = "Images/14.jpg";
$size = GetImageSize($img_src);
$src_w = $size[0];
$src_h = $size[1];
$dst_w = floor($src_w * 0.5);
$dst_h = floor($src_h * 0.5);
$test_h = round(($dst_w / $src_w) * $src_h);
$test_w = round(($dst_h / $src_h) * $src_w);
if($test_h>$dst_h) $dst_w = $test_w;
else $dst_h = $test_h;
$dst_im = ImageCreateTrueColor($dst_w,$dst_h);
$src_im = ImageCreateFromJpeg($img_src);
ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
ImageJpeg($dst_im);
ImageDestroy($dst_im);
ImageDestroy($src_im);
?>
> ca marche !!

pour plus d'explications, regarde mon code attentivement (fait a partir de bout trouves sur le net)
par rapport au tien, il verifie quand meme si l image est verticale ou horizontale;
Commenter la réponse de darkkat
Messages postés
20
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
28 janvier 2005
0
Merci
Je suis désolé mais le code suivant fonctionne. Faut trouver la différence ailleur, le code est bon , surement la vesion de GD qui doit etre différente. Ca ne peut pas être le code.

<?php
$src_im = ImageCreateFromJpeg("Images/14.jpg");
$src_w = imageSX($src_im);
$src_h = imageSY($src_im);
$dst_w = floor($src_w * 0.5);
$dst_h = floor($src_h * 0.5);
$dst_im = imagecreatetruecolor($dst_w,$dst_h);
imagecopyresized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
imagejpeg($dst_im);
imagedestroy($dst_im) ;
?>
-> Ok chez moi. http://mixo.ath.cx:8000/testsource/

L'erreur doit provenir d'autre part : ce n'est pas le navigateur non plus ni la version de easy php, suis pratiquement persuadé que ca vient des extensions php ou apache. non ?

--
"Marco mal se pasejo"
Commenter la réponse de mixo11
Messages postés
23
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
4 décembre 2004
0
Merci
perso jutilises pas Easy PHP mais ZMWS
Commenter la réponse de darkkat
Messages postés
23
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
4 décembre 2004
0
Merci
perso jutilises pas Easy PHP mais ZMWS
Commenter la réponse de darkkat
Messages postés
23
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
4 décembre 2004
0
Merci
cest quoi ce bug ? :D

je sais pas trop d'ou vient l'erreur car j'ai eu du mal pour faire mon script de miniatures (qui me sert pour la gallerie), GD et moi c'est pas l'entente totale ^^
Commenter la réponse de darkkat
Messages postés
33
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
28 novembre 2005
0
Merci
Merci à tous pour votre aide,
je cherche de mon côté et dès que j'en sais plus, je vous tiens au courant !!
Pour info le fichier inclus est une class :

<?php

// variables relatifs au fichier
if( !isset ($_FILES['fichier']))
$_FILES['fichier'] = "null" ;
// variables realatifs au formulaire
if(!isset ($_POST['sendFile']) )
$_POST['sendFile'] = "null" ;

class UploadImage
{
var $stChemin ; // indique le path dans lequel l'image va être enregistrée
var $iSize = 1000 ; // taille de l'image 1000 Ko max
var $stImageNom ;
var $iImageTaille ;
var $bError ; // gestion de l'erreur
var $stRetourUtilisateur ; // renvoie un message à l'utilisateur à propos du transfert reussi ou pas

// constructeur
function UploadImage($path)
{
$this->stImageNom =$_FILES['fichier']['name'] ;
$this->iImageTaille =$_FILES['fichier']['size'] ;
$this->bError = false ;

// test d'erreur
if($_FILES['fichier']['error'])
{
$this->stRetourUtilisateur="Désolé erreur de transfert !" ;
$bError=true ;
}
else if ($this->checkExt()==false) // erreur sur l'extension jpg ou gif
{
$this->stRetourUtilisateur="Crazy n'accepte que les transferts d'images gif ou jpg" ;
$bError=true ;
}
else if($this->iImageTaille> $this->iSize) // erreur sur la taille
{
$this->stRetourUtilisateur ="taille de l'image trop grande" ;
$bError=true ;
}

// si pas d'erreur deplacement du fichier dans le dossier spécifié par $path
if( $this->bError!= true && move_uploaded_file ($_FILES['fichier']['tmp_name'], $path.$this->stImageNom) )
$this->stRetourUtilisateur="Image bien recu !
Merci !!" ;
}
// renvoie un message à l'utilisateur à propos du transfert reussi ou pas
function getMessageTransf()
{
return $this->stRetourUtilisateur ;
}
// Verifie si c'est une image gif ou jpg
function checkExt()
{
$bValid=false ;

if(strtolower(substr($this->stImageNom,-3)) == "jpg")
$bValid=true ;
else if(strtolower(substr($this->stImageNom,-3)) == "gif")
$bValid=true ;
return $bValid ;
}
}
// affichage du formulaire
function formFichier($page,$value)
{
$form = " <FORM name=formImage method=POST action=$page ENCTYPE=multipart/form-data>" ;
$form .= " " ;
$form .= " " ;
$form .= " " ;
$form .= " </FORM>" ;

return $form ;
}
?>

Merci encore pour votre aide Messieurs dames !!
Commenter la réponse de cs_jerame
Messages postés
33
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
28 novembre 2005
0
Merci
Salut,
Voila une solution qui marche pour moi :

Je mets tout ce qui suit dans un include affiche.php
//******************************************//
// afichage des images en taille reduites //
//******************************************//
// pour le test, je vais chercher l'image que j'ai uploader pour l'aficher reduite dans les dimension et taille voulue
// on declare qu'on va creer une image
header("Content-type: image/jpeg");
$src_im = ImageCreateFromJpeg("Images/14.jpg");
$src_w = imageSX($src_im);
$src_h = imageSY($src_im);
$dst_w = floor($src_w * 0.5);
$dst_h = floor($src_h * 0.5);
// ImageCreateTrueColor crée une image noire en vraie couleurs
$dst_im = imagecreatetruecolor($dst_w,$dst_h);
// ImageCopyResampled copie et rééchantillonne l'image originale
imagecopyresized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
// ImageJpeg génère l'image dans la sortie standard (c.à.d le navigateur).
// Le second paramètre est optionnel ; dans ce cas, l'image est générée dans un fichier
imagejpeg($dst_im);
imagedestroy($dst_im) ;

puis je fais en HTML:
Commenter la réponse de cs_jerame