begin process at 2012 05 27 19:47:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CRÉER DES MINIATURES D'IMAGES (THUMB)

CRÉER DES MINIATURES D'IMAGES (THUMB)


 Information sur la source

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :30/06/2003 Date de mise à jour :01/07/2003 13:58:47 Vu :16 995

Auteur : DHKold

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

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

Source

  • <?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);
  • }
  • }
  • ?>
<?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.


 Sources du même auteur

UPLOAD
MINI SHOUTBOX EASY-INSTALL
HIGHLIGHT HTML : COLORISATION DE CODE HTML
Source avec Zip PETITE GALERIE DYNAMIQUE
CODES RGB ET HEXA DES COULEURS.

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

Commentaires et avis

Commentaire de Sipadan le 01/07/2003 09:00:26

Pas mal, mais les miniatures pesent 44ko pour un originale de 15ko ???

Commentaire de Sipadan le 01/07/2003 09:03:47

Ok, si on mais $qual = 50, elles font 5ko.

Commentaire de DHKold le 01/07/2003 11:20:16

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.

Commentaire de koko le 01/07/2003 11:56:03

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;

Commentaire de DHKold le 01/07/2003 13:57:40

juste!, petite erreur de ma part.

Commentaire de matrey le 01/07/2003 20:12:47

A utiliser de préférence dans les nouvelles version de GD (meilleure qualité)
ImageCopyResized -&gt; ImageCopyResampled
ImageCreate -&gt; ImageCreateTrueColor

Commentaire de kzimir666 le 09/07/2003 12:02:14

J'aime bien ton script ! Serait-il possible d'indiquer comment faire un upload d'image tout con par formulaire "multi-part/data" ?
Comme ça, je pourrais exécuter ton script après l'upload...

Commentaire de cdivoux le 07/09/2003 16:12:08

Ca marche pas du tout, aucune imagette n'est crée. Je n'arrive pas à utiliser "imagejpeg". Sur le disque aucune image n'est crée et dans le navigateur, à la place d'une miniature, j'ai des caractères.
HEEELP

Commentaire de koko le 07/09/2003 16:55:20

tu as la libraire GD installé sur ton serveur ?

Commentaire de cdivoux le 07/09/2003 18:44:44

Oui, a priori, elle est installée en local, mais çà ne marche pas. (Dans phpinfo GD2 est afficher "enable").
Par-contre je viens de tout placer sur jexiste et là ça marche.

Commentaire de cercleaventure le 25/09/2003 16:15:43

Est il possible d'indiqué le chemin du prepertoir images.

Commentaire de TStorm le 09/05/2004 19:00:38

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.

Commentaire de Hyogapag le 01/07/2004 13:23:46

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.

Commentaire de DHKold le 01/07/2004 17:22:01

-Normalement ca devrait en effet ajouter une bordure
-non il ne lit pas les sous-dossiers :)

Commentaire de kevv le 09/09/2004 17:39:35

Merci pour ce code, c'est très interessant ....

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,172 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales