Fonction PHP : class miniature()
Ici, vous pouvez voir (et copier/coller) le code complet de la fonction PHP class miniature(). N'hésitez pas voter pour cette fonction si elle vous plaît ou si vous vouv en servez !
class miniature() ajouté le 2009-05-22 08:01:34 par PaHtP
# Class MINIATURE
# By DEMANGEL Maxime alias PaHtP
# Mise à jour : 22 mai 2009
class Miniature {
var $hauteurMin;
var $largeurMin;
var $hauteurMax;
var $largeurMax;
var $selection_largeurMin;
var $selection_hauteurMin;
var $dest;
var $source;
var $nouvelleLargeur;
var $nouvelleHauteur;
var $x1 = 0;
var $y1 = 0;
var $tag;
function Miniature($source, $dest) {
// On test si le fichier source existe
@fopen($source, 'r')
or exit ('Erreur : Le fichier source n\'existe pas');
// On test si le dossier des miniature existe sinon on le creer
if (!file_exists($dest))
mkdir($dest)
or exit ('Erreur : Impossible d\'acceder au dossier destination');
$this->source = $source;
$this->dest = $dest;
}
// recadrage de l'image
function recadrer($x1, $y1, $largeur, $hauteur) {
$this->x1 = $x1;
$this->y1 = $y1;
$this->tailleImage();
$this->nouvelleHauteur = $hauteur;
$this->nouvelleLargeur = $largeur;
}
// Redimensionne l'image
function resize($largeur, $hauteur) {
$this->hauteurMin = $hauteur;
$this->largeurMin = $largeur;
$this->tailleImage();
$this->largeurMin = $largeur;
$this->hauteurMin = $hauteur;
}
// Redimentionnement de l'image automatique
function resizeAuto() {
$this->tailleImage();
// on cherche la plus grande longueur
if($this->largeurMax >= $this->hauteurMax) {
$tmp = $this->largeurMax / 100;
$this->largeurMin = 100;
$this->hauteurMin = $this->hauteurMax / $tmp;
} else {
$tmp = $this->hauteurMax / 100;
$this->hauteurMin = 100;
$this->largeurMin = $this->largeurMax / $tmp;
}
}
// Retourne la taille de l'image
function tailleImage() {
$tmp = GetImageSize($this->source);
$this->largeurMax = $tmp[0];
$this->hauteurMax = $tmp[1];
return $tmp;
}
// Ajoute un tag a la miniature
function tag($tag) {
$this->tag = $tag;
}
// Redimensionne l'image
function execute() {
// Déterminer l'extension à partir du nom de fichier
$extension = substr( $this->source, -3 );
// Afin de simplifier les comparaisons, on met tout en minuscule
$extension = strtolower( $extension );
// Recupere le nom de l'image
$name = explode('/', $this->source);
$nb = count($name);
$dest = $this->dest;
switch ($extension) {
case "jpg":
case "peg": //pour le cas où l'extension est "jpeg"
$img_src_resource = imagecreatefromjpeg( $this->source );
break;
case "gif":
$img_src_resource = imagecreatefromgif( $this->source );
break;
case "png":
$img_src_resource = imagecreatefrompng( $this->source );
break;
// On peut également ouvrir les formats wbmp, xbm et xpm (vérifier la configuration du serveur)
default:
return ("L'image n'est pas dans un format reconnu. Extensions autorisées : jpeg, gif, png");
break;
}
// On creer la nouvelle image et on applique l'image
if($this->nouvelleHauteur != '') {
$img_dst_resource = imagecreatetruecolor($this->nouvelleLargeur, $this->nouvelleHauteur);
ImageCopyResampled($img_dst_resource, $img_src_resource, 0, 0, $this->x1, $this->y1, $this->largeurMax, $this->hauteurMax, $this->largeurMax, $this->hauteurMax);
} else {
$img_dst_resource = imagecreatetruecolor($this->largeurMin, $this->hauteurMin);
ImageCopyResampled($img_dst_resource, $img_src_resource, 0, 0, $this->x1, $this->y1, $this->largeurMin, $this->hauteurMin, $this->largeurMax, $this->hauteurMax);
}
switch ( $extension ) {
case "jpg":
case "peg": //pour le cas où l'extension est "jpeg"
imagejpeg( $img_dst_resource, $dest );
break;
case "gif":
imagegif( $img_dst_resource, $dest );
break;
case "png":
imagepng( $img_dst_resource, $dest );
break;
}
}
}
Cette classe vous permet de faire des miniatures de vos images, soit en donnant la largeur et la hauteur, soit avec un redimensionnement automatique.
Commentaires sur la fonctions php
PaHtP 29/05/2009 à 20:49
quand je l'ai codé mon serveur n'acceptait pas le php 5 en même temps passer cette classe en php 5 ça prend 5min
Xbox Live 14/06/2009 à 09:36
Personnellement j'utilise ce code là :
Qu'en pensez vous? (je ne suis qu'un codeur amateur)
$url_image = $url.$alea.$nomFichier;
//Création de la miniature format 135*85
$filename = $url_image;
list($width_1, $height_1, $image_type) = getimagesize($filename);
echo $filename;
// Définition de la largeur et de la hauteur maximale
$width = 135;
$height = 85;
// Content type
header('Content-type: image/jpeg');
// Cacul des nouvelles dimensions
list($width_orig, $height_orig) = getimagesize($filename);
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}
// Redimensionnement
imagealphablending($image, true);
imagesavealpha($image, true);
$image_p = imagecreatetruecolor($width, $height);
switch ($image_type)
{
case 1: $image = imagecreatefromgif($filename); break;
case 2: $image = imagecreatefromjpeg($filename); break;
case 3: $image = imagecreatefrompng($filename); break;
default: return ''; break;
}
//$image = imagecreatefrompng($filename);
//$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Affichage (au cas où le script diffonctionnerait
//imagejpeg($image_p, null, 100);
//exportation de l'image
imagejpeg($image_p, 'mini-'.$alea.'.jpg'); machintruc 30/11/2009 à 22:52
Salut!
je suis débutant en php, j'aimerais bien utiliser cette classe, mais je ne vois pas trop comment faire après l'instanciation...
merci pour votre aide!
Hugo 22/05/2009 à 13:37
Pourquoi une classe PHP 4 et non PHP 5 ???