Faire des vignettes jpeg automatiques avec redimensionnement

Soyez le premier à donner votre avis sur cette source.

Vue 20 825 fois - Téléchargée 1 648 fois

Description

Ce script vous permettra de créer des vignettes pour des aperçu d'images en paramétrant la hauteur et la largeur, ainsi que la qualité de compression, tout en laissant l'image proportionelle .

Compatibilité :
  • Utilisation de la bibliothéque GD (toutes versions)
  • PHP 3.0.16, PHP 4 ou +


Indications pour l'utilisation de cette fonction dans votre site :

Recopiez le code si-dessous, puis mettez-le dans la page dans laquelle vous recevrez le champ image et que vous voulez la redimensionner. Si vous utilisez cette fonction dans plusieures page, mettez la dans un script à part et faites un
<?
require_once "chemin vers la page";
....

juste au début de votre page.

Voilà la fonction, ses arguments seront expliqués plus bas...

Source / Exemple :


<? 
// -----------------------------------------------------------------------
// Fonction de redimensionnement d'image
// -----------------------------------------------------------------------
function Resize($source, $destination, $width, $height, $stretch, $quality) {
// 1 - Gestion des erreurs
if (!file_exists($source)) return "Error : File not exist !";
if (!function_exists("ImageCreateFromJpeg")) return "Error : Librairie GD non instalée !";
// 2 - Lecture de l'image
$src_img=imagecreatefromjpeg($source); 
if (!$src_img) return "Erreur : Lecture impossible de l'image ".$source." !";
$w = imagesx($src_img);
$h = imagesy($src_img);
// 3 - Redimensionnement en largeur
if (!$stretch) {
    if ((($h * $width) / $w) > $height) {
        $im_w = ($w * $height) / $h;
        $im_h = $height;
    } else {
        $im_w = $width;
        $im_h = ($h * $width) / $w;
    }
} else {
    $im_w = $width;
    $im_h = $height;
}
$x = ($width-$im_w)/2;
$y = ($height-$im_h)/2;
// 4 - Création d'une image buffer
    $dst_img = imagecreate($width, $height);
    if (!$dst_img) return "Erreur : Buffer non créé : ".$dst_img;
    $bgc = imagecolorallocate($dst_img, 255, 255, 255);
    imagefilledrectangle($dst_img, 0, 0, $width, $height, $bgc);
    imagecopyresized($dst_img,$src_img,$x,$y,0,0,$im_w,$im_h,$w,$h); 
// 5 - Enregistrement du fichier
    imagejpeg($dst_img,$destination,$quality); 
}
?>

Conclusion :


Resize($source, $destination, $width, $height, $stretch, $quality)

Bon alors en paramétres tu indiques :

- source
l'image que tu veux redimensionner

-destination
l'image résultante

- width
la largeur de l'image résultante

- height
la hauteur de l'image résultante

- stretch
true/false : si l'image est strétchée ou bien proportionelle

- quality
la qualitée de l'image résultante

MISES A JOUR :

15/01/2004 : J'ai rajoutté l'argument strectch afin de pourvoir choisir entre étirer l'image ou la redimensionner automatiquement.

BUGS : Aucun bug constaté pour le moment.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
4
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
27 décembre 2006

Bonjour.
Avant que je pose ma question, j'aimerais vous prévenir que je débute, mais que je fais de mon mieu pour apprendre, et surtout comprendre... Pasque se baser sur des morceaux de code pour construir un site, c'est bien beau, mais si on ne les comprends pas, ça ne sert à rien...

Donc, voici ma question :

en fait, le script n'enregistre l'image qu'une seule fois? Et c'est seulement quand il l'affiche, qu'il la redimentionne, c'est juste?

Maintenant, ce que je comprends pas, c'est comment lui indiquer quelle image utiliser, quel fichier. Toi, tu lui donne un nom ( im_transforme ). Moi, si je veux lui dire quelle image prendre ( j'ai plusieurs image dans un dossier ), je dois lister mes images, et ensuite faire une boucle à afficher. Et à la place du nom de l'image, je met une variable? C'est ça?

Donc, si mon résonnement est correct, tu peux afficher une vignette un peu n'importe ou sur ta page. Pas seulement quand tu upload un fichier?

:) J'espère que c'est compréhensible, et que j'aurais une réponse.
Merci encore pour la source, même si je n'ai pas réussi à l'utiliser ( pour l'instant ).
Messages postés
4
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
8 décembre 2005

pour eviter la pixelisation de l'image, remplacer
imagecopyresized
par
imagecopyresampled
Messages postés
9
Date d'inscription
dimanche 4 décembre 2005
Statut
Membre
Dernière intervention
17 février 2009

Salut,
L'image créé est de mauvaise qualité. ( remarque, c'est pour une miniature )^^
Sinon, coté code, c'est pas mal.
++
Messages postés
7
Date d'inscription
lundi 4 avril 2005
Statut
Membre
Dernière intervention
4 mai 2006

Il est super bien fait ton code mais ta bo modifié la qualité, le résultat est merdik qd tu pass du 1200 width en 800 width... Jsé po ptet c moi mai bon... si ya du new, tien moi o couran. ;-)
Messages postés
143
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
6 juin 2010

pourquoi ca m'affiche des 111 ??????????????
Afficher les 37 commentaires

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.