Publié le 11/10/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Creer une vignette a partir d'une image JPEG

Comment générer un Thumbnail à la volée ? Pour afficher une galerie d'image, la méthode la plus courante est de parcourir le contenu d'un répertoire et d'afficher des vignettes des images.

Générer des miniatures

La class JPEGThumbnail permet de générer et afficher une image redimensionnée. Les fonctions de la librairie GD étant peu bavarde, une gestion d'erreur a été ajoutée sur le ratio et le fichier d'entré
<?php
/**
 * Créer une vignette d'une image JPEG
 * un ratio <100 réduit l'image
 * un ratio >100 agrandit l'image
 * Fobec 2010
 */
 
class JPEGThumbnail {
 
    private $img;
/**
 * Redimensionner l'image
 * @param string $file nom du fichier
 * @param int $ratio coef de redimensionnement [10..1000]
 */
    public function resize($file,$ratio) {
        /** tester les paramètres **/
        if (!file_exists($file)) {
            throw new Exception("File not exists !!!");
        }
        if ($ratio<10 ||$ratio>1000) {
            throw new Exception("Ratio range must be between 10 and 1000 !!!");
        }
        /** Ouvrir le JPEG inital **/
        $oldim = imagecreatefromjpeg($file);
        $oldw = imagesx($oldim);
        $oldh = imagesy($oldim);
 
         /** Calculer les nouvelles dimensions **/
        $width = ($oldw/100)*$ratio;
        $height = ($oldh/100)*$ratio;
 
        /** Dessiner la vignette **/
        $this->img = imagecreatetruecolor($width,$height);
        imagecopyresampled($this->img,$oldim,0,0,0,0,$width,$height,$oldw,$oldh);
    }
 
    /**
     * Afficher la vignette
     */
    public function flush() {
        header("Content-Type: image/jpeg");
        imagejpeg($this->img);
    }
}
?>

Exemple de réduction de la taille de l'image

Imaginons que le site internet repose sur un dossier d'image. La class permet de générer les vignettes sans toucher au image dans le dossier, les vignettes sont redimensionnées à l'affichage.
<?php
/**
 * Exemple d'utilisation
 */
try {
    $tumb = new JPEGThumbnail;
    $tumb->resize("123.jpg", 200);
    $tumb->flush();
} catch (exception $e) {
    echo $e->__toString();
}
?>
La génération de vignette à la volé demande des ressources supplémentaire au serveur. Par contre, sans créer des images redimensionnées, la maintenance est plus facile car seules les images à taille réelle doit être mise a jour.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
11/10/2010
Visualisation
vu 3297 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 267 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Absolut dans news

Bonjour,
Dans l'outil de localisation d'IP, je ne comprends pas le sens de la rubrique precision dans le Rapport d'analyse de l'adresse IP ex 1/10, 9/10, bonne, ....
Merci

Publié par fredouille dans java

Il ne faut pas oublier de mettre aussi System.setErr(printStream); pour ne pas oublier les printStackTrace() declenches par le catch

Publié par ammar dans CMS

merci pour ce code , mais ce que je veux savoir c\'est es-ce que possible de récupérer la totalité de code source html de la page original.<br>merci...

Publié par farid dans CMS

formation delphi 7

Publié par Candide dans logiciel

Cree avec Lazarus.
un help est fourni dans le ZIP