Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
MINIATURISATION D'IMAGE V2
Information sur la source
Description
Fonction de redimensionnement d'image (+ sauvegarde si besoin est), un peu plus performante que la derniere :) Je compte encore l'optimiser par la suite mais la c'est deja pas mal je pense, elle retravaille l'image et elle le fait bien donc pas de soucis =)
Source
- <?php
- function mini ($xmax,$ymax,$dossier,$img,$name,$fond_couleur) {
- /*
- $xmax => largeur maximale de l'image
- $ymax => hauteur maximale de l'image
- => soit une taille en px soit 'none' pour dire qu'on veut garder la même
- $dossier => dossier dans lequel doit être créé la miniature : format dossier/ (ne pas oublier le / )
- $img => l'image à miniaturiser
- $name => le nom de l'image
- $fond_couleur => couleur de fond de l'image au format hexadecimal RRR-VVV-BBB
- */
-
- // Types d'images utilisés pour le 'switch' un peu plus loin
- define('FORMAT_GIF',1);
- define('FORMAT_JPEG',2);
- define('FORMAT_PNG',3);
-
- // dimensions critiques
- define('XMIN',0);
- define('YMAX',1000);
- define('XMIN',0);
- define('XMAX',1000);
-
- // dimensions par défaut
- define('DEFAUTX',150);
- define('DEFAUTY',150);
-
- // on essaie d'ouvrir le fichier uniquement en lecture (pour être sur qu'il existe) :
- if(@$file=fopen($img,'r')) {
- // si le fichier a bien été ouvert, on verifie que c'est bien une image
- // getimagesize renvoie plusieurs infos de l'image (dimensions, type etc...) et FALSE
- // si le fichier n'est pas une image :
- if(list($largeur,$hauteur,$extention) = @getimagesize(htmlentities($img))) {
- // si c'est bien une image, on teste les valeurs voulues pour la miniature
- // largeur
- if((isset($xmax) && !empty($xmax) && $xmax>XMIN && $xmax<XMAX)) {
- $xm=$xmax;
- } elseif($xmax=='none') {
- // si la largeur n'est pas definie on garde la même
- $xm=$largeur;
- } else {
- $xm=DEFAUTX; // largeur par defaut (au cas ou)
- }
- // hauteur
- if((isset($ymax) && !empty($ymax) && $ymax>YMIN && $ymax<YMAX)) {
- $ym=$ymax;
- } elseif($ymax=='none') {
- // si la hauteur n'est pas definie on garde la même
- $ym=$hauteur;
- } else {
- $ym=DEFAUTY; // largeur par defaut (au cas ou)
- }
- // creation de la miniature :
- // test de l'extention :
- if(in_array($extention,array(1,2,3))) {
- // si l'extention est bonne on continue
- switch($extention) {
- case FORMAT_GIF: // GIF
- $im=imagecreatefromgif($img) or die('probleme de librairie');
- break;
- case FORMAT_JPEG: //JPEG
- $im=imagecreatefromjpeg($img) or die('probleme de librairie');
- break;
- case FORMAT_PNG: // PNG
- $im=imagecreatefrompng($img) or die('probleme de librairie');
- break;
- }
- // test des dimensions :
- // si l'image est trop large ou trop haute
- if($largeur>$xm || $hauteur>$ym) {
- // coeficient de proportionnalité (pour garder les proportions dans la reduction de l'image)
- // la reduction ne se fait que pour des dimensions finales entieres donc on arrondis le resultat
- if ($largeur && ($largeur > $hauteur)) {
- // image plus large que haute
- $nhauteur = ceil(($hauteur * $xm)/$largeur);
- $nlargeur=$xm;
- } else {
- // image plus haute que large
- $nlargeur = ceil(($largeur *$ym)/$hauteur);
- $nhauteur=$ym;
- }
- } elseif($largeur<$xm || $hauteur<$ym) {
- if($largeur<=$xm) {
- $nlargeur=$largeur;
- $xm=$largeur;
- }
- if($hauteur<=$ym) {
- $nhauteur=$hauteur;
- $ym=$hauteur;
- }
- } else {
- $nlargeur=$largeur;
- $nhauteur=$hauteur;
- }
- // calcul de la position de l'image sur la miniature (centrée si l'image finale est plus grande)
- $py=($ym-$nhauteur)/2;
- $px=($xm-$nlargeur)/2;
-
- // miniaturisation
-
- // image sur fond de couleur definie par l'utilisateur :
- if(isset($fond_couleur) && !empty($fond_couleur)) {
- $src=imagecreatetruecolor($xm,$ym) or die('probleme de librairie');
-
- list($fond_rouge,$fond_vert,$fond_bleu) = explode('-',$fond_couleur);
- $fond=imagecolorallocate($src,$fond_rouge,$fond_vert,$fond_bleu) or die('probleme de librairie');
-
- // on dessine un rectangle de la couleur choisit par l'utilisateur (couleur de fond)
- imagefilledrectangle($src,0,0,$xm,$ym,$fond) or die('probleme de librairie');
-
- // on créé la miniature
- imagecopyresampled($src,$im,$px,$py,0,0,$nlargeur,$nhauteur,$largeur,$hauteur) or die('probleme de librairie');
- } else {
- // Aucune couleur de fond definie!
- return false;
- }
- } else {
- //L'image doit être au format GIF, JPEG ou PNG !
- return false;
- }
- } else {
- // Le fichier n'est pas une image !
- return false;
- }
- } else {
- return false;
- }
- // dans le cas ou vous voudriez sauvegarder puis afficher, ne pas inverser cet ordre !
- // sauvegarde de l'image :
- imagepng($src,$dosier.$name.'.png');
-
- // affichage de l'image
- header('content-type: image/png');
- return @imagepng($src);
-
- }
- ?>
<?php
function mini ($xmax,$ymax,$dossier,$img,$name,$fond_couleur) {
/*
$xmax => largeur maximale de l'image
$ymax => hauteur maximale de l'image
=> soit une taille en px soit 'none' pour dire qu'on veut garder la même
$dossier => dossier dans lequel doit être créé la miniature : format dossier/ (ne pas oublier le / )
$img => l'image à miniaturiser
$name => le nom de l'image
$fond_couleur => couleur de fond de l'image au format hexadecimal RRR-VVV-BBB
*/
// Types d'images utilisés pour le 'switch' un peu plus loin
define('FORMAT_GIF',1);
define('FORMAT_JPEG',2);
define('FORMAT_PNG',3);
// dimensions critiques
define('XMIN',0);
define('YMAX',1000);
define('XMIN',0);
define('XMAX',1000);
// dimensions par défaut
define('DEFAUTX',150);
define('DEFAUTY',150);
// on essaie d'ouvrir le fichier uniquement en lecture (pour être sur qu'il existe) :
if(@$file=fopen($img,'r')) {
// si le fichier a bien été ouvert, on verifie que c'est bien une image
// getimagesize renvoie plusieurs infos de l'image (dimensions, type etc...) et FALSE
// si le fichier n'est pas une image :
if(list($largeur,$hauteur,$extention) = @getimagesize(htmlentities($img))) {
// si c'est bien une image, on teste les valeurs voulues pour la miniature
// largeur
if((isset($xmax) && !empty($xmax) && $xmax>XMIN && $xmax<XMAX)) {
$xm=$xmax;
} elseif($xmax=='none') {
// si la largeur n'est pas definie on garde la même
$xm=$largeur;
} else {
$xm=DEFAUTX; // largeur par defaut (au cas ou)
}
// hauteur
if((isset($ymax) && !empty($ymax) && $ymax>YMIN && $ymax<YMAX)) {
$ym=$ymax;
} elseif($ymax=='none') {
// si la hauteur n'est pas definie on garde la même
$ym=$hauteur;
} else {
$ym=DEFAUTY; // largeur par defaut (au cas ou)
}
// creation de la miniature :
// test de l'extention :
if(in_array($extention,array(1,2,3))) {
// si l'extention est bonne on continue
switch($extention) {
case FORMAT_GIF: // GIF
$im=imagecreatefromgif($img) or die('probleme de librairie');
break;
case FORMAT_JPEG: //JPEG
$im=imagecreatefromjpeg($img) or die('probleme de librairie');
break;
case FORMAT_PNG: // PNG
$im=imagecreatefrompng($img) or die('probleme de librairie');
break;
}
// test des dimensions :
// si l'image est trop large ou trop haute
if($largeur>$xm || $hauteur>$ym) {
// coeficient de proportionnalité (pour garder les proportions dans la reduction de l'image)
// la reduction ne se fait que pour des dimensions finales entieres donc on arrondis le resultat
if ($largeur && ($largeur > $hauteur)) {
// image plus large que haute
$nhauteur = ceil(($hauteur * $xm)/$largeur);
$nlargeur=$xm;
} else {
// image plus haute que large
$nlargeur = ceil(($largeur *$ym)/$hauteur);
$nhauteur=$ym;
}
} elseif($largeur<$xm || $hauteur<$ym) {
if($largeur<=$xm) {
$nlargeur=$largeur;
$xm=$largeur;
}
if($hauteur<=$ym) {
$nhauteur=$hauteur;
$ym=$hauteur;
}
} else {
$nlargeur=$largeur;
$nhauteur=$hauteur;
}
// calcul de la position de l'image sur la miniature (centrée si l'image finale est plus grande)
$py=($ym-$nhauteur)/2;
$px=($xm-$nlargeur)/2;
// miniaturisation
// image sur fond de couleur definie par l'utilisateur :
if(isset($fond_couleur) && !empty($fond_couleur)) {
$src=imagecreatetruecolor($xm,$ym) or die('probleme de librairie');
list($fond_rouge,$fond_vert,$fond_bleu) = explode('-',$fond_couleur);
$fond=imagecolorallocate($src,$fond_rouge,$fond_vert,$fond_bleu) or die('probleme de librairie');
// on dessine un rectangle de la couleur choisit par l'utilisateur (couleur de fond)
imagefilledrectangle($src,0,0,$xm,$ym,$fond) or die('probleme de librairie');
// on créé la miniature
imagecopyresampled($src,$im,$px,$py,0,0,$nlargeur,$nhauteur,$largeur,$hauteur) or die('probleme de librairie');
} else {
// Aucune couleur de fond definie!
return false;
}
} else {
//L'image doit être au format GIF, JPEG ou PNG !
return false;
}
} else {
// Le fichier n'est pas une image !
return false;
}
} else {
return false;
}
// dans le cas ou vous voudriez sauvegarder puis afficher, ne pas inverser cet ordre !
// sauvegarde de l'image :
imagepng($src,$dosier.$name.'.png');
// affichage de l'image
header('content-type: image/png');
return @imagepng($src);
}
?>
Conclusion
Rien à ajouter pour l'instant, comme je l'ai dit je vais la modifier par la suite pour par exemple ne pas ecrase une image deja existante au cas ou, on verra par la suite :)
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Sources de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
Téléchargements
Logiciels à télécharger sur le même thème :
|