Bonjour
Je cherche à mettre au point un petit programme très simple qui fabrique une miniature (thumbnail) à partir d'un fichier jpeg.
En mettant des affichages entre les lignes, je trouve que la fonction php imagecopyresized() renvoie un statut négatif (c'est à dire qu'elle ne fonctionne pas, sans doute une erreur dans les paramètres passés, mais laquelle ??? ).
Question: comment faire pour debugger un appel de fonction de ce genre?
Voici le code (avec commentaires et traces de passage)
L'adresse du programme de test : http://www.alma-musica.net/images/posters/test.php
Merci de votre aide
Je cherche à mettre au point un petit programme très simple qui fabrique une miniature (thumbnail) à partir d'un fichier jpeg.
En mettant des affichages entre les lignes, je trouve que la fonction php imagecopyresized() renvoie un statut négatif (c'est à dire qu'elle ne fonctionne pas, sans doute une erreur dans les paramètres passés, mais laquelle ??? ).
Question: comment faire pour debugger un appel de fonction de ce genre?
Voici le code (avec commentaires et traces de passage)
<?php
$image = $_SERVER['DOCUMENT_ROOT'] . '/images/posters/test.jpg';
$thumbnail = $_SERVER['DOCUMENT_ROOT'] . '/images/posters/test-t.jpg';
echo "<pre>", __FILE__, ' ', __LINE__, "</pre>";
makeThumbnail($image, $thumbnail, 0, 32);
/* fabriquer une miniature à partir d'une image jpeg
img_file: fichier image
thumbnail_file: fichier miniature
thumb_width: largeur de la miniature en pixels
thumb_height: hauteur de la miniature en pixels
*/
function makeThumbnail($img_file, $thumbnail_file, $thumb_width, $thumb_height) {
if(! file_exists($img_file)) return false;
list($width, $height) = getimagesize($img_file);
echo "<pre>", __FILE__, ' ', __LINE__, "\n",$width, "\t", $height,"</pre>";
/* si la largeur de la miniature est spécifiée, calculer la hauteur en proportion
sinon calculer la largeur en proportion de la hauteur */
$thWidth = $thumb_width;
$thHeight = $thumb_height;
if($thWidth > 0) $thHeight = $height * $thWidth / $width;
else $thWidth = $width * $thHeight / $height;
echo "<pre>", __FILE__, ' ', __LINE__, "\n","thWidth=$thWidth\tthHeight=$thHeight","</pre>";
/* créer un objet image à partir du fichier image */
$source = imagecreatefromjpeg($img_file);
echo "<pre>", __FILE__, ' ', __LINE__, "\n";print_r($source);echo "</pre>";
/* créer une miniature vide */
$thumb = imagecreatetruecolor($thWidth, $thHeight);
echo "<pre>", __FILE__, ' ', __LINE__, "\n";print_r($thumb);echo "</pre>";
/* copier et mettre à l'échelle */
$X = (imagecopyresized($thumb, $source, 0, 0, 0, 0, $thWidth, $thHeight) ? "OK" : "Not OK");
echo "<pre>", __FILE__, ' ', __LINE__, "\n";print_r($X);echo "</pre>";
/* mettre la miniature dans le fichier miniature */
imagejpeg($thumb, $thumbnail_file);
return true;
}
?>
L'adresse du programme de test : http://www.alma-musica.net/images/posters/test.php
Merci de votre aide