Version complète: sur le forum Webmaster Hub : redimensionner des images sur le serveur
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Scripts et utilitaires
blast
Bonjour,

J'ai un immense stock d'images sur un serveur (env. 1Go) qui ont tous les poids possibles. Certaines font jusqu'à 3mo, d'autres sont plus light.

J'aimerais toutes les alléger pour pouvoir les employer pour un site web. Existe-t-il un script capable de redimensionner/alléger les images directement sur le serveur à votre connaissance ? Je ne désire pas les rapatrier sur mon PC pour le faire.

Merci de votre aide

Blast
Leonick
oui, avec ImageCreateFromJpeg() et ImageCopyResampled()
blast
merci beaucoup de ta réponse. Malgré cette piste, je ne parviens pas à trouver un script qui me ferait cette manipulation efficacement (proportions gardées). Et je n'ai pas les compétences pour en créer un. Merci de vos conseils.
Leonick
Allez, cadeau de la maison
CODE
<?php
function generer_miniature($image, $rep_source,$rep_dest,$largeur, $hauteur, $qualite) {
        // chemin de la miniature à générer
        $dest = $rep_dest.$image;
        $dest_rep=substr($rep_dest,0,strrpos($rep_dest,"/"));
        if ((!file_exists($dest_rep)) && (!is_dir($dest_rep)))
          {mkdir ($dest_rep, 0705);
            if ((!file_exists($dest_rep)) && (!is_dir($dest_rep)))
            echo "<p>Erreur lors de la création du répertoire $dest_rep</p>\n";
          }  
                
        $img_in = imagecreatefromjpeg($rep_source.$image);
        $size = getimagesize($rep_source.$image);
        $l = $size[0];$h = $size[1];
        
        $ratio=max($h/$hauteur,$l/$largeur);
        $new_haut =$h /$ratio;$new_larg =$l /$ratio;
        
            // on réduit l'image à la largeur voulue, mais en gardant la hauteur proportionnelle
            $img_out = ImageCreateTruecolor($new_larg, $new_haut);
            ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
                        
            // création d'une image vide aux dimensions de la miniature
            $im = ImageCreateTruecolor($new_larg, $new_haut);
  
            // on copie la zone de l'image de hauteur voulue dans l'image vide
            ImageCopy($im, $img_out, 0, 0, 0, 0, $new_larg, $new_haut);
            ImageJpeg($im, $dest, $qualite);
            
            // destruction des images en mémoire
            ImageDestroy($img_out);
            ImageDestroy($im);                
    }
?>
blast
merci beaucoup je vais tester cela!

c'est très sympa, un peu Noël avant l'heure !
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.