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 3045 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 264 articles
|BIO_PSEUDO|
Commentaires récents

Publié par bob le poisson dans java

Bonjour, votre script est tres bien mais attention l'utilisation du mot cle static sur la methode scale(BufferedImage bImage, double factor) est inutile et empeche de liberer la ressource.

Publié par BIBAK dans CMS

merci infiniment, ce sont des beau icons::: :)

Publié par need help dans java

Merci pour cet exemple.
Est ce possible de récupérer le flux video d'une camera ou bien une appareil photo branché par USB.

Merci d'avance.

Publié par makanaki dans logiciel

je veux essayer ce logiciel pour tester les jeux de loto de chez nous

Publié par Annuaire francophone dans tuto

Bonjour, savez-vous s'il existe un logiciel de capture d'écran (ascreen) pour window. Merci