Bonjour,

Je viens de réutiliser le tuto de redimensionnement à la volée mais j'ai le même problème que certains (dans les commentaires), les images ne s'affichent pas au premier chargement...

J'ai essayé de trouver un poste s'y rapportant dans le forum mais je n'ai rien trouvé...

Est-ce que quelqu'un a trouvé une solution ?
si oui ... Laquelle ?

et si la réponse a déjà été donnée, où est elle <:)
Merci d'avance
;)

5 réponses


JaxX
Auteur
Réponse acceptée

C'est résolu,

Je ciblais mal le ficher 'nouvelle image'.jpg
avec la redirection il fallait que je fasse 'file_get_contents' depuis le dossier de mon cropper.php
erreur bête

Bonjour,

J'avais le même problème mais c'est réglé depuis, passe nous ton code je verrai les différences par rapport au mien. Il me semble bien que c'était une question de header placé au mauvais endroit ^^ .

JaxX
Auteur

Merci :

if (!file_exists ($dest))
{
    $source = $dos.$name.$extension;
    //echo 'Source<br>'.$source;
    //echo '<br><img src="'.$source.'" width="200px" /><br>';
    $dosDest = '../_Medias/images/';

    if (redim ($dosDest.$source, $name, $dosDest.$dos,$dimH,$dimL,$extension) )
    {
        header ('Content-type:image/'.$extension);
        echo file_get_contents ($dest);
        //echo '<img src="'.$name.'_'.$dims.'_'.$sizing.''.$extension.'"/>';
        exit();
    } else 
    {
        echo 'Oups !';
    }
}

C'est bien ce que je pensais le header est dans la vérification de l'utilisation de la fonction redim hors dans ce contexte pour une raison que j'ignore tu dois recharger la page pour créer l'image. Il faut déplacer le header dans la fonction redim moi je l'ai mis juste après la création de la variable $pattern et tout fonctionne.

JaxX
Auteur

Re bjonour,

Merci pour ta réponse

Par contre le code source de la fonction redim n'étant pas disponible, je ne trouve pas la variable "$pattern", peux-tu m'éclairer stp.

J'ai fait ma propre fonction de redimensionnement. Je la post au cas où ça intéresserai qq'un.

Peux tu me dire où tu placerais le header stp, Merci d'avance :

function redim ($sourceR, $name, $destR,$H,$L,$extensionR)
{
    $extOk = array ('.jpg', '.jpeg', '.png', '.gif');
    $extensionMin = strtolower ($extensionR);
    if (in_array ( $extensionMin, $extOk) )
    {
        $dimSource = getimagesize ($sourceR);
        //print_r ($dimSource);
        $sourceL=$dimSource[0];
        $sourceH=$dimSource[1];
        if ($extensionMin=='.jpg'|| $extensionMin=='.jpeg')
        {
            //echo "<br>C'est un Jpeg<br>";
            $imgCopy = imagecreatefromjpeg($sourceR);
        }
        if ($extensionMin=='.png')
        {
            //echo "<br>C'est un PNG<br>";
            $imgCopy = imagecreatefrompng($sourceR);
        }
        if ($extensionMin=='.gif')
        {
            //echo "<br>C'est un GIF<br>";
            $imgCopy = imagecreatefromgif($sourceR);
        }
        $ratioLH = $L/$H;
        $ratioSourceLH = $sourceL/$sourceH;
        //echo '<br>$ratioLH :' .$ratioLH ;
        //echo '<br>$ratioSourceLH :' .$ratioSourceLH ;
        if ($ratioLH >= $ratioSourceLH)
        {
        //echo '<br>$ratioLH >= $ratioSourceLH';
        $newH = $H;
        $newL = $H*$ratioSourceLH;
        }
        else if ($ratioLH < $ratioSourceLH)
        {
        //echo '$ratioLH < $ratioSourceLH';
        $newL = $L;
        $newH = $L/$ratioSourceLH;
        }
        //echo '<br>dims='.$newL.'x'.$newH;
        $imgVide = imagecreatetruecolor ($newL, $newH); // nouvelle image noir
        imagecopyresampled($imgVide, $imgCopy, 0, 0, 0, 0, $newL, $newH, $sourceL, $sourceH);// copie aux dimensions
        $newURL = $destR.$name.'_'.$L.'x'.$H.'_contain';
        if ($extensionMin=='.jpg'|| $extensionMin=='.jpeg')
        {
            imagejpeg ($imgVide ,$newURL.'.jpg',90);
            //echo "<br> _imagejpeg ($imgVide , $newURL.'.jpg',90)</br>";
        }
        if ($extensionMin=='.png'|| $extensionMin=='.gif')
        {
            imagepng ($imgVide , $newURL.'.png');
        }
       // echo '<br>'.$newURL.'<br><img src="'.$newURL.'.jpg"/>';
    }
    return true;
}