Créer des miniatures d'images (thumb)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 903 fois - Téléchargée 29 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_kevv
Messages postés
1
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
9 septembre 2004
-
Merci pour ce code, c'est très interessant ....
DHKold
Messages postés
153
Date d'inscription
vendredi 6 décembre 2002
Statut
Membre
Dernière intervention
29 mai 2005
-
-Normalement ca devrait en effet ajouter une bordure
-non il ne lit pas les sous-dossiers :)
Hyogapag
Messages postés
1
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2004
-
Une remarque :
si j'ajoute la ligne

int imagerectangle(resource im ,int x1 ,int y1 ,int x2 ,int y2 ,int #000000 )

entre ces deux lignes :
imagecopyresized($thumb, $origin, 0, 0, 0, 0,$larg2, $haut2, $larg, haut);
imagejpeg($thumb,"./thumbs/thumb$zone",$qual);

j'aurai des miniatures avec une bordure noire de 1px incorporée à l'image? Sinon où dois-je placer cette ligne

Et une question : ce script lit-il les sous-dossiers?

Merci de votre aide, un newbie.
TStorm
Messages postés
5
Date d'inscription
dimanche 15 décembre 2002
Statut
Membre
Dernière intervention
9 mai 2004
-
J'ai dû adapter une ligne sur le code:

À la ligne 6 c'est :

$rep = opendir($rep_cur); //On ouvre le répertoire

et non

$rep = opendir($cur_rep); //On ouvre le répertoire

Bref il marche bien ton script et c'est parfaitement ce que je cherchais :). Un grand merci.
cercleaventure
Messages postés
12
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
19 janvier 2004
-
Est il possible d'indiqué le chemin du prepertoir images.

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.