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

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 Patrice dans CMS

Concernant la commande ShellExecute :

Si vous voulez lancer un programme dont le nom est contenu dans une propriété text,
caption, items bref d\'un string ... n'oubliez pas de transfor...

Publié par mfranca dans CMS

Bonjour, Excellent outil pour moi, très interessant pour mes recherches en amateur...
Merci pour cette création Olubil
Ciao ciao

Publié par Laurent dans java

Merci :)
Teste sous Linux CentOS, fonctionne mais ne recouvre pas la barre des taches.

Publié par makanaki dans logiciel

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