Redimensionnement image après UPLOAD

Fred -  
 Fred -
Bonjour,

J'utilise cette fonction pour redimensionner une image après son upload (trouvée ici :http://www.asp-php.net/scripts/asp-php/vignette.php dans le commentaire car la fonction proposée ne fonctionnait pas non plus tout le temps...)

function redimage($img_src,$img_dest,$dst_w,$dst_h) {
// Lit les dimensions de l'image
$size = GetImageSize($img_src);
$src_w = $size[0]; $src_h = $size[1];
$zoom_h = $max_h / $src_h;
$zoom_w = $max_w / $src_w;
$zoom = min($zoom_h, $zoom_w);
$dst_h = $zoom<1 ? round($src_h*$zoom) : $src_h;
$dst_w = $zoom<1 ? round($src_w*$zoom) : $src_w;

if (function_exists('imagecreatetruecolor'))
{
$dst_im = imagecreatetruecolor($dst_w, $dst_h);
}
else
{
$dst_im = imagecreate($dst_w, $dst_h);
}

if (function_exists('imagecopyresampled'))
imagecopyresampled($dst_im, $src_im, 0,0,0,0, $dst_w,$dst_h,$src_w,$src_h);
else imagecopyresized($dst_im, $src_im, 0,0,0,0, $dst_w,$dst_h,$src_w,$src_h);
}

Cette fonction est appelée ainsi :

// On redimensionne l'image en 140 x 120 pixels
redimage($img1_dest,$img1_dest,140,120);

Or, cela fonctionne très bien pour certaines images et pas pour d'autres.
Par exemple cela ne passe pas pour celle-ci :
http://portal.unesco.org/...

J'ai ce type de message d'erreur :
imagecreatetruecolor invalid image dimension
imagecopyresampled(): supplied argument is not a valid Image resource

Une idée d'où peut provenir le pb ?

Merci

Fred

2 réponses

  1. Profil bloqué
     
    Bonjour ,

    As-tu éssayer de la redimenssioner comme c'est écrit ?
    0
  2. Fred
     
    oui oui, j'ai testé cette fonction mais ce n'est pas mieux :
    <?
    function redimage($img_src,$img_dest,$dst_w,$dst_h) {
    // Lit les dimensions de l'image
    $size = GetImageSize($img_src);
    $src_w = $size[0]; $src_h = $size[1];
    // Teste les dimensions tenant dans la zone
    $test_h = round(($dst_w / $src_w) * $src_h);
    $test_w = round(($dst_h / $src_h) * $src_w);
    // Si Height final non précisé (0)
    if(!$dst_h) $dst_h = $test_h;
    // Sinon si Width final non précisé (0)
    elseif(!$dst_w) $dst_w = $test_w;
    // Sinon teste quel redimensionnement tient dans la zone
    elseif($test_h>$dst_h) $dst_w = $test_w;
    else $dst_h = $test_h;

    // Crée une image vierge aux bonnes dimensions
    $dst_im = ImageCreate($dst_w,$dst_h);
    // Copie dedans l'image initiale redimensionnée
    $src_im = ImageCreateFromJpeg($img_src);
    ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
    // Sauve la nouvelle image
    ImageJpeg($dst_im,$img_dest);
    // Détruis les tampons
    ImageDestroy($dst_im);
    ImageDestroy($src_im);

    // Affiche le descritif de la vignette
    echo "SRC='".$img_dest."' WIDTH=".$dst_w." HEIGHT=".$dst_h;
    }
    ?>

    <IMG <?redimage("monimage.jpg","temp/monimage.jpg",XX,YY)?>>

    Fred
    0