Création de miniatures |
Fonction php de création |
|
 |
Cette fonction sert à créer des miniatures.
|
// Fichier Fct_resize.php
<?php
// $Hauteur_Miniatures provient par exemple d'un fichier de configuration
// où est stocké la hauteur de la miniature (en px).
// ex.: $Hauteur_Miniatures = 150;
function creer_miniature($img_big, $dirSrc, $dirDest, $Hauteur_Miniatures) {
$tnH = $Hauteur_Miniatures;
$t_rename = 0;
$th_quality = 1;
$img_big = $dirSrc . "/" . $img_big;
$size = @getimagesize($img_big);
switch($size[2]){
case 1:
if (imagetypes() & IMG_GIF)
$src = imagecreatefromgif($img_big);
break;
case 2:
if (imagetypes() & IMG_JPG)
$src = imagecreatefromjpeg($img_big);
break;
case 3:
if (imagetypes() & IMG_PNG)
$src = imagecreatefrompng($img_big);
break;
default :
if (preg_match("/\.wbmp$/",$img_big) && (imagetypes() & IMG_WBMP)){
$src = imagecreatefromwbmp($img_big);
$size[0] = imagesx($src);
$size[1] = imagesy($src);
if (!isset($format))
$format = 4;
}
}
if (!$src){
$thumbs[$img_big] = "Format NON SUPPORTE !";
}else{
$destW = $size[0]*$tnH/$size[1];
$destH = $tnH;
if ($th_quality == 1){
$dest = imagecreatetruecolor($destW,$destH);
imagecopyresampled($dest,$src,0,0,0,0,$destW,$destH,$size[0],$size[1]);
} else {
$dest = imagecreatetruecolor($destW,$destH);
imagecopyresized($dest,$src,0,0,0,0,$destW,$destH,$size[0],$size[1]);
}
$tn_name = $img_big;
// ICI VOUS POUVEZ DEFINIR DE RENOMMER LE FICHIER
// Exemple: "_m" renommera : fichier.jpg en fichier_m.jpg
$tn_name = preg_replace("/\.(gif|jpe|jpg|jpeg|png|wbmp)$/i","_m",$tn_name);
$tn_name = preg_replace("/.*\/([^\/]+)$/i","$dirDest\\1",$tn_name);
if (isset($format))
$type = $format;
else
$type = $size[2];
switch($type){
case 1 :
if (imagetypes() & IMG_GIF){
imagegif($dest,$tn_name.".gif");
$thumbs[$img_big] = "$tn_name.gif";
}
break;
case 2:
if (imagetypes() & IMG_JPG){
imagejpeg($dest,$tn_name.".jpg");
$thumbs[$img_big] = "$tn_name.jpg";
}
break;
case 3:
if (imagetypes() & IMG_PNG){
imagepng($dest,$tn_name.".png");
$thumbs[$img_big] = "$tn_name.png";
}
break;
default:
if (imagetypes() & IMG_WBMP){
imagewbmp($dest,$tn_name.".wbmp");
$thumbs[$img_big] = "$tn_name.wbmp";
}
}
if (!($thumbs[$img_big])){
$thumbs[$img_big] = "Format NON SUPPORTE !";
}
// FIN CREATION
}
}
?>
|
Pour appeler la fonction, il faut faire comme suit ...

Où dans cet exemple :

- $f = provient d'un readdir
- $rep = nom du répertoire (ex.: events/album1/wazza/)
- $rep.'medium/' = répertoire de destination (droits nobody ou 777)
- $Hauteur_Affiches_Events = La hauteur désirée de l'affiche (ex.: 200)
<?php creer_miniature($f, $rep, $rep.'medium/', $Hauteur_Affiches_Events); <?
|
Pour effectuer récursivement la redimension de miniatures à la volée, rien de tel qu'une bonne vieille boucle while sur le readdir ...
Exemple :
<?php
// $repertoire provient d'une base de donnée par exemple
$rep = ''.$repertoire.'/'.$CfgDirAffiche.'/';
$dir = opendir($rep);
while ($f = readdir($dir)) {
// Vérification de l'extension pour ne pas renommer
// un fichier Exécutable (swf ou autre éventuellement présent)
if(strtolower(substr($f, -3)) == "jpg" || strtolower(substr($f, -3)) == "gif"
|| strtolower(substr($f, -3)) == "png" || strtolower(substr($f, -3)) == "wbmp"){
// REDIMENSIONNEMENT DES AFFICHES SI LES MINIATURES N'EXISTENT PAS
if(!file_exists($rep.'medium/'.$medium_f)){
creer_miniature($f, $rep, $rep.'medium/', $Hauteur_Affiches_Events);
}
echo '<table class="Tableau" width="100" cellspacing="0" cellpadding="0"
align="center"><tr><td><div align="center"><a href="'.$repertoire.'/'.$CfgDirAffiche
.'/'.$f.'" target="_blank"><img src="'.$repertoire.'/'.$CfgDirAffiche.'/medium/'
.$medium_f.'" border="0"></a></div></td></tr></table>';
}
?>
|
Et voilà ...
Bonne prog ;)
|
|