Imagejpeg

cs_jerame Messages postés 33 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 28 novembre 2005 - 21 nov. 2004 à 11:49
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.

16 réponses

mixo11 Messages postés 20 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 28 janvier 2005
21 nov. 2004 à 12:11
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.
0
cs_jerame Messages postés 33 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 28 novembre 2005
21 nov. 2004 à 12:18
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 ! :)
0
mixo11 Messages postés 20 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 28 janvier 2005
21 nov. 2004 à 12:25
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"
0
cs_jerame Messages postés 33 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 28 novembre 2005
21 nov. 2004 à 12:34
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 ????
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jerame Messages postés 33 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 28 novembre 2005
21 nov. 2004 à 12:38
Petite precision, j'utilise des variables de sessions, est ce que ca peut venir de là ?
Je ne pense pas quand même.
0
darkkat Messages postés 23 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 4 décembre 2004
21 nov. 2004 à 13:47
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
0
cs_jerame Messages postés 33 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 28 novembre 2005
21 nov. 2004 à 14:31
Merci darkkat,
mais ça ne reoud pas mon probleme, pourquoi pas d'affichage ?

Pour afficher l'image, dois je faire ?
0
mixo11 Messages postés 20 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 28 janvier 2005
21 nov. 2004 à 14:33
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"
0
cs_jerame Messages postés 33 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 28 novembre 2005
21 nov. 2004 à 14:51
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>
0
darkkat Messages postés 23 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 4 décembre 2004
21 nov. 2004 à 15:18
- 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;
0
mixo11 Messages postés 20 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 28 janvier 2005
21 nov. 2004 à 15:22
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"
0
darkkat Messages postés 23 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 4 décembre 2004
21 nov. 2004 à 15:26
perso jutilises pas Easy PHP mais ZMWS
0
darkkat Messages postés 23 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 4 décembre 2004
21 nov. 2004 à 15:26
perso jutilises pas Easy PHP mais ZMWS
0
darkkat Messages postés 23 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 4 décembre 2004
21 nov. 2004 à 15:28
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 ^^
0
cs_jerame Messages postés 33 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 28 novembre 2005
21 nov. 2004 à 19:18
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 !!
0
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
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:
0
Rejoignez-nous