Créer des miniatures d'images (thumb)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 20 486 fois - Téléchargée 31 fois

Contenu du snippet

Le principe est simple, ce script PHP prend tous les fichiers jpg de son répertoire et en crée une miniature

Source / Exemple :


<?PHP
$lalarg = 250; //Largeur maximale
$lahaut = 250; //Hauteur maximale
$rep_cur = getcwd(); //On prend le répertoire courant
chdir($rep_cur); //On initialise le répertoire
$rep = opendir($cur_rep); //On ouvre le répertoire
//Ensuite on lit un par un les fichiers et dossiers du répertoire en ne prenant que les jpg
while ($zone = readdir($rep)){
if ($zone != "." && $zone != ".." && strtoupper(substr($zone,-3)) == "JPG")
   {echo "<u><span style=\"color:#BB3300\">Traitement du fichier \"$zone\"</span></u><br>";
    $origin = ImageCreateFromJPEG("./$zone");
    $taille = FileSize("./$zone");
    echo "<b>Taille: </b><i>$taille octets</i><br>";
    $larg = ImageSX($origin); $pc_l = $larg / $lalarg;
    $haut = ImageSY($origin); $pc_h = $haut / $lahaut;
    echo "<b>Largeur: </b><i>$larg</i><br><b>Hauteur: </b><i>$haut</i><br>";
    echo "<b>Largeur % lalarg: </b><i>$pc_l</i><br><b>Hauteur % lahaut: </b><i>$pc_h</i><br>";
    $pc_m = $pc_l; if ($pc_h > $pc_l) $pc_m = $pc_h;
    echo "<b>Dimension %: </b><i>$pc_m</i><br>";
    $haut2 = $haut / $pc_m;
    $larg2 = $larg / $pc_m;
    $iqual = ($taille / $pc_m) /1000;
    $qual = 100;
    if ($iqual > 50) $qual = 100 * (50 / $iqual);
    echo "<b>Indice de qualité: </b><i>$iqual</i><br><b>Adaptation qualité %:</b><i>$qual</i><br>> thumb$zone généré<br><br>";
    $thumb = ImageCreate($larg2,$haut2);
    ImageCopyResized($thumb, $origin, 0, 0, 0, 0,$larg2, $haut2, $larg, $haut);
    ImageJpeg($thumb,"./thumbs/thumb$zone",$qual);
    ImageDestroy($origin);
    ImageDestroy($thumb);
   }
}
?>

Conclusion :


vous pouvez modifier les variables $lahaut et lalarg qui donnent la hauteur et la largeur maximale de la miniature.

A voir également

Ajouter un commentaire Commentaires
cs_Sipadan Messages postés 125 Date d'inscription lundi 5 août 2002 Statut Membre Dernière intervention 23 novembre 2011
1 juil. 2003 à 09:00
Pas mal, mais les miniatures pesent 44ko pour un originale de 15ko ???
cs_Sipadan Messages postés 125 Date d'inscription lundi 5 août 2002 Statut Membre Dernière intervention 23 novembre 2011
1 juil. 2003 à 09:03
Ok, si on mais $qual = 50, elles font 5ko.
DHKold Messages postés 153 Date d'inscription vendredi 6 décembre 2002 Statut Membre Dernière intervention 29 mai 2005 2
1 juil. 2003 à 11:20
Ben en fait, c'est normal que si tu fait passer une image de 15ko assez petite en une miniature plus grande, ca prend plus de place. Le principe est de réduire la taille et la qualité donc à toi de choisir la bonne taille. Pour $qual, c'est un peu spéciale, car je ne voulait pas alourdir le script et donc je fait une estimation de la taille de la miniature sans modifier la qualité (juste la taille), et c'est en fonction de cette estimation qu'il réduit la qualité. Mais plus tu réduit $qual, plus la qualité sera diminuée.
cs_koko Messages postés 654 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 20 février 2005
1 juil. 2003 à 11:56
il y a une petite erreur :
$haut imagesy($origin); $pc_h $haut / lahaut;
lahaut vaut 0 alors !!! faut changer en mettant
$haut imagesy($origin); $pc_h $haut / $lahaut;
DHKold Messages postés 153 Date d'inscription vendredi 6 décembre 2002 Statut Membre Dernière intervention 29 mai 2005 2
1 juil. 2003 à 13:57
juste!, petite erreur de ma part.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.