Où est l'érreur ? (Image Miniature)

[Résolu]
Signaler
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
-
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
-
Salut,

après avoir cherché une solution pour faire une image miniature en automatique j'ai finalement trouvé un script super

Voici le script :

<?php

/*

*

*

* Avertissement : Cette librairie de fonctions PHP est distribuee avec l'espoir

* qu'elle sera utile, mais elle l'est SANS AUCUNE GARANTIE; sans meme la garantie de

* COMMERCIALISATION ou d'UTILITE POUR UN BUT QUELCONQUE.

* Elle est librement redistribuable tant que la presente licence, ainsi que les credits des

* auteurs respectifs de chaque fonctions sont laisses ensembles.

* En aucun cas, Nexen.net ne pourra etre tenu responsable de quelques consequences que ce soit

* de l'utilisation ou la mesutilisation de ces fonctions PHP.



*/



/****

* Titre : CreateEtiquette

* Auteur : Mike Mithouard

* Email : root@mickael-mithouard.com

* Url : www.mickael-mithouard.com

* Description : Cette fonction reprend la création de miniatures.
Le rajout est la fonction imagecreatetruecolor qui évite un
échantillonement sur 255 couleurs

****/

function CreateEtiquette2($Image){

/*

$Image: Nom de l'image originale

$Source: Chemin absolu du répertoire de l'image originale

$Destination: Chemin absolu du répertoire de l'image réduite

$ratio: Largeur de l'image réduite.

*/

$Source = './';

$Destination = './Miniature_';

$ratio = 150;

if(substr(strtolower($Source.$Image), (strlen($Source.$Image)-4),4)=='.gif'){

$src=imagecreatefromgif($Source.$Image);



}else if(substr(strtolower($Source.$Image),
(strlen($Source.$Image)-4),4)=='.jpeg' ||
substr(strtolower($Source.$Image),
(strlen($Source.$Image)-5),5)=='.jpeg'){

$src=imagecreatefromjpeg($Source.$Image);



}else{

echo 'Format d\'image non supporté. Utilisez des *.gif ou *.jpg';

exit();

}

$size = getimagesize($Source.$Image);

if($size[0] > $size[1]){



$im=imagecreatetruecolor(round(($ratio/$size[1])*$size[0]), $ratio);

imagecopyresized($im, $src, 0, 0, 0, 0, round(($ratio/$size[1])*$size[0]), $ratio, $size[0], $size[1]);

}

else{

$im=imagecreatetruecolor($ratio, round(($ratio/$size[0])*$size[1]));

imagecopyresized($im, $src, 0, 0, 0, 0, $ratio, round($size[1]*($ratio/$size[0])), $size[0], $size[1]);

}

if(!imagejpeg($im, $Destination.$Image)){

echo 'la création de l\'étiquette a echoué pout l\'image ',$Image;

}

}



$img = 'image.jpeg';

if(is_file('Miniature_'.$img)){

include('Miniature_'.$img);

}else{

CreateEtiquette2($img);

include('Miniature_'.$img);

}

?>


Sauf que voilà petit problème :

Voyez par vous meme il ne m'affiche pas des caractères bizarres ou une image mais

Parse error: parse error, unexpected '}' in c:\program files\internet\serveurs\easyphp1-7\www\immortal-pc\miniatures\Miniature_image.jpeg on line 41

Ce qui est illogique, l'image est bien créée.

Petite précision mettez // devant les include et là plus d'érreur!!!!

Donc j'en déduit que c'est écrit dans l'image.

J'ai fait un test : j'ai ouvert l'image miniature avec paint et j'ai enregistré directement sans rien changer.

Je relance le script (l'image existe déjà donc pas de recréation de miniature) et la l'image apparait!!!



C'est où le bug ?

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.

15 réponses

Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Salut,

j'ai trouvé l'érreur !!!!!

Cela ne viens pas du script mais de l'image elle même !!!

Fait le test avec cette image puis avec cette image

Flagrant !!!

Essaye ce code avec les 2 images :

<?php

include('monimage');

?>

Et là on vois bien que certaines images (surtout les truquées) sont totalement pouravent.

Pour remédier à ça bah pas le choix replacer le include par un header.

@+

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,



}else if



à remplacer par }elseif



?

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Heu non.

désolé mais c'est la meme chose, j'avais déjà testé.

Essaye.

@+

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
ouais en effet c'est louche... le genre de bugs où il faut une heure
pour le corriger alors qu'il manque un point virgule ou une connerie
dans ce genre...



Bref indente ton code et après je regarde si tu veux, mais là je peux pas

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
<?php

/*

*

*

* Avertissement : Cette librairie de fonctions PHP est distribuee avec l'espoir

* qu'elle sera utile, mais elle l'est SANS AUCUNE GARANTIE; sans meme la garantie de

* COMMERCIALISATION ou d'UTILITE POUR UN BUT QUELCONQUE.

* Elle est librement redistribuable tant que la presente licence, ainsi que les credits des

* auteurs respectifs de chaque fonctions sont laisses ensembles.

* En aucun cas, Nexen.net ne pourra etre tenu responsable de quelques consequences que ce soit

* de l'utilisation ou la mesutilisation de ces fonctions PHP.



*/



/****

* Titre : CreateEtiquette

* Auteur : Mike Mithouard

* Email : root@mickael-mithouard.com

* Url : www.mickael-mithouard.com


* Description : Cette fonction reprend la création de miniatures. Le
rajout est la fonction imagecreatetruecolor qui évite un
échantillonement sur 255 couleurs

****/

function CreateEtiquette2($Image){

/*

$Image: Nom de l'image originale

$Source: Chemin absolu du répertoire de l'image originale

$Destination: Chemin absolu du répertoire de l'image réduite

$ratio: Largeur de l'image réduite.

*/

$Source = './';

$Destination = './Miniature_';

$ratio = 150;

if(substr(strtolower($Source.$Image), (strlen($Source.$Image)-4),4)=='.gif'){

$src=imagecreatefromgif($Source.$Image);




}elseif(substr(strtolower($Source.$Image),
(strlen($Source.$Image)-4),4)=='.jpeg' ||
substr(strtolower($Source.$Image),
(strlen($Source.$Image)-5),5)=='.jpeg'){

$src=imagecreatefromjpeg($Source.$Image);



}else{

echo 'Format d\'image non supporté. Utilisez des *.gif ou *.jpg';

exit;

}

$size = getimagesize($Source.$Image);

if($size[0] > $size[1]){



$im=imagecreatetruecolor(round(($ratio/$size[1])*$size[0]), $ratio);

imagecopyresized($im, $src, 0, 0, 0, 0, round(($ratio/$size[1])*$size[0]), $ratio, $size[0], $size[1]);



}else{

$im=imagecreatetruecolor($ratio, round(($ratio/$size[0])*$size[1]));

imagecopyresized($im, $src, 0, 0, 0, 0, $ratio, round($size[1]*($ratio/$size[0])), $size[0], $size[1]);

}

if(!imagejpeg($im, $Destination.$Image)){

echo 'la création de l\'étiquette a echoué pout l\'image ',$Image;

}

}



$img = 'image.jpeg';

$size = getimagesize($img);

//header('Content-type: '.$size['mime']);



if(!is_file('Miniature_'.$img)){

CreateEtiquette2($img);

}

include('Miniature_'.$img);

?>


J'ai supposé que indente ton code voulais dire colorise ton code.

J'ai désactivé le header pour voir si l'érreur apparait toujours.

Si non je pensais on pourrais lire l'image puis réécrire l'image ( comme paint ) mais sans apporter de modif.

@+
Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
non non indenter veut dire "mets des tabulations" (en gros) pour qu'on distingue les conditions, etc...
<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
ok





<?php

/*
*
*
* Avertissement : Cette librairie de fonctions PHP est distribuee avec l'espoir
* qu'elle sera utile, mais elle l'est SANS AUCUNE GARANTIE; sans meme la garantie de
* COMMERCIALISATION ou d'UTILITE POUR UN BUT QUELCONQUE.
* Elle est librement redistribuable tant que la presente licence, ainsi que les credits des
* auteurs respectifs de chaque fonctions sont laisses ensembles.
* En aucun cas, Nexen.net ne pourra etre tenu responsable de quelques consequences que ce soit
* de l'utilisation ou la mesutilisation de ces fonctions PHP.

*/

/****
* Titre : CreateEtiquette
* Auteur : Mike Mithouard
* Email : root@mickael-mithouard.com
* Url : www.mickael-mithouard.com

* Description : Cette fonction reprend la création de miniatures. Le
rajout est la fonction imagecreatetruecolor qui évite un
échantillonement sur 255 couleurs
****/

function CreateEtiquette2($Image){

/*
$Image: Nom de l'image originale
$Source: Chemin absolu du répertoire de l'image originale
$Destination: Chemin absolu du répertoire de l'image réduite
$ratio: Largeur de l'image réduite.
*/

$Source = './';

$Destination = './Miniature_';

$ratio = 150;

if(substr(strtolower($Source.$Image), (strlen($Source.$Image)-4),4)=='.gif'){

$src=imagecreatefromgif($Source.$Image);



}elseif(substr(strtolower($Source.$Image), (strlen($Source.$Image)-4),4)=='.jpeg' || substr(strtolower($Source.$Image), (strlen($Source.$Image)-5),5)=='.jpeg'){

$src=imagecreatefromjpeg($Source.$Image);



}else{

echo 'Format d\'image non supporté. Utilisez des *.gif ou *.jpg';

exit;

}

$size = getimagesize($Source.$Image);

if($size[0] > $size[1]){

$im=imagecreatetruecolor(round(($ratio/$size[1])*$size[0]), $ratio);

imagecopyresized($im, $src, 0, 0, 0, 0, round(($ratio/$size[1])*$size[0]), $ratio, $size[0], $size[1]);



}else{

$im=imagecreatetruecolor($ratio, round(($ratio/$size[0])*$size[1]));

imagecopyresized($im, $src, 0, 0, 0, 0, $ratio, round($size[1]*($ratio/$size[0])), $size[0], $size[1]);

}

if(!imagejpeg($im, $Destination.$Image)){

echo 'la création de l\'étiquette a echoué pout l\'image ',$Image;

}

}



$img = 'image.jpeg';

$size = getimagesize($img);

//header('Content-type: '.$size['mime']);



if(!is_file('Miniature_'.$img)){

CreateEtiquette2($img);

}

include('Miniature_'.$img);

?>



Comme ça ?

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Je n'ai toujours pas trouvé le problème!!!

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Re,

dit Anthomicro tu saurais pas comment faire pour que l'image ne soit pas lut par php mais juste incluse !?

+


Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Grâce à Immortal-PC votre ordinateur passera les âges.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
non non il faut passer par du html, tu peux pas comme ça directement.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Car j'ai relut attentivement l'érreur est regarde toi meme



Parse error: parse error, unexpected '}' in c:\program files\internet\serveurs\easyphp1-7\www\immortal-pc\miniatures\Miniature_image.jpeg on line 41

L'érreur est sur Miniature_image.jpeg

Et puis je pensais créer un prog pour afficher l'image plus vite

@+


Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
soit tu as un } en trop, soit il en manque un.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Mais non l'érreur est dans le fichier Miniature_image.jpeg et pas dans le fichier de création de miniature.

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
ah ok, bah parce que tu tentes d'inclure une image jpeg alors que ce n'est pas possible, cherche pas plus loin.



si tu veux traiter l'image avec php utilise la fonction imagecreatefromjpeg()

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Re,

non c'est possible sauf qu'il y a un caract <? dans l'image et ça plante tout!!! lol

Je plaisante, j'arraite la connerie j'utilise, header

@+

Merci

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
<!--StartFragment -->Grâce à Immortal-PC votre ordinateur passera les âges.