Juin 142011
fonction imparfaite, j’ai certaines images qui ne s’affichent pas.
mais 95% du temps, pas de soucis.
découpé en 2 fichiers.
renommez ces fichiers en php.
Download : imgbox.txt
/********************************************************************************
* fonction permettant de redimensionner une image � la vol�e
* imgbox($chemin,$vert_sz=0,$hori_sz=0,$class="",$viewname=1, $islink=1)
* $chemin <= image ou r�pertoire relatif � la racine du site web
* $vert_sz <= taille max verticale, 0 pour laisser la fonction choisir
* $hori_sz <= taille max horizontale, 0 pour laisser la fonction choisir
* $class <= le nom d'une classe css � ajouter s'il y en a
* $viewname <= 1 pour afficher le nom de l'image, 0 pour ne pas l'afficher
* $islink <= 1 pour cr�er un lien vers l'image originale, 0 pour ne pas le cr�er
*
* exemple d'utilisation:
* echo imgbox('/images/',178);
*
*******************************************************************************/
include_once $_SERVER['DOCUMENT_ROOT'] . '/fonctions/getFiles.php';
function imgbox($chemin,$vert_sz=0,$hori_sz=0,$class="",$viewname=1, $islink=1) {
// si c'est un fichier
if(is_file($_SERVER['DOCUMENT_ROOT'] . $chemin)) {
$imagename = $_SERVER['DOCUMENT_ROOT'] . $chemin ;
}
// si c'est un r�pertoire
elseif (is_dir($_SERVER['DOCUMENT_ROOT'] . $chemin)) {
// repertoire contenant les images
$rep = $_SERVER['DOCUMENT_ROOT'] . $chemin;
$files = getFiles($rep);
// on en prend une au hazard
srand((float) microtime() * 10000000);
$rand_keys = array_rand($files,1);
$imagename = $files[$rand_keys];
}
// sinon
else {
return "format non valide";
}
$url = str_replace($_SERVER['DOCUMENT_ROOT'],'',$imagename);
$sz = "";
if($vert_sz != 0 ) $sz = "&vert_sz={$vert_sz}";
if($hori_sz != 0 ) $sz = "&hori_sz={$hori_sz}";
if($class != "" ) $class = ' class="' . $class . '" ';
$viewname = ($viewname == 1) ? '<br/>' . basename($url) : "" ;
if($islink == 1) {
return '<a href="' . $url . '" target="_blank"><img ' . $class . ' src="/inc/generate_img.php?img=' . $url . $sz . '"/>' . $viewname . '</a> ';
} else {
return '<img ' . $class . ' src="/inc/generate_img.php?img=' . $url . $sz . '"/>';
}
}
Download : generate_img.txt
$imagename = $_SERVER['DOCUMENT_ROOT'] . '/' . $_GET['img'];
$vert_sz = ( isset($_GET['vert_sz']) ) ? $_GET['vert_sz'] : "" ;
$hori_sz = ( isset($_GET['hori_sz']) ) ? $_GET['hori_sz'] : "" ;
// Create source image and dimensions
$imagemime = image_type_to_mime_type($imagename);
// si on a pas pu decouvrir le mime type, on s'appui sur l'extension
if($imagemime == 'application/octet-stream') {
$imagemime = 'image/' . strtolower(substr($imagename, strrpos($imagename, '.') + 1));
}
switch($imagemime) {
case 'image/gif':
$imgcreatfrom = imagecreatefromgif ;
$imgcreat = imagecreate ;
$imgsnd = imagegif ;
break ;
case 'image/jpeg':
$imgcreatfrom = imagecreatefromjpeg ;
$imgcreat = imagecreatetruecolor ;
$imgsnd = imagejpeg ;
break ;
case 'image/jpg':
$imgcreatfrom = imagecreatefromjpeg ;
$imgcreat = imagecreatetruecolor ;
$imgsnd = imagejpeg ;
break ;
case 'image/png':
$imgcreatfrom = imagecreatefrompng ;
$imgcreat = imagecreatetruecolor ;
$imgsnd = imagepng ;
break ;
case 'image/bmp':
$imgcreatfrom = imagecreatefromwbmp ;
$imgcreat = imagecreatetruecolor ;
$imgsnd = imagewbmp ;
break ;
default: $imgcreatfrom = 'false' ; break ;
}
while(true) {
if ( $imgcreatfrom == 'false' ) {
echo "<br/>impossible de determiner le mime type de $imagename<br/>";
break;
}
$src_img = @$imgcreatfrom($imagename);
$srcsize = @getimagesize($imagename);
if (!$srcsize) {
echo "<br/>impossible de determiner la taille de $imagename<br/>";
break;
}
// si on a les deux tailles
if ( ($vert_sz != "") && ($hori_sz != "") ) {
$dest_x = $vert_sz ;
$dest_y = $hori_sz ;
}
// si on a que l'horizontal
elseif ( ($vert_sz == "") && ($hori_sz != "") ) {
$dest_y = $hori_sz ;
$dest_x = ($dest_y / $srcsize[0]) * $srcsize[1];
}
// si on a que le vertical
elseif ( ($vert_sz != "") && ($hori_sz == "") ) {
$dest_x = $vert_sz ;
$dest_y = ($dest_x / $srcsize[0]) * $srcsize[1];
}
// si on a rien
else {
$dest_x = 178;
$dest_y = (178 / $srcsize[0]) * $srcsize[1];
}
if (!$src_img) {
echo "<br/>erreur au lancement de la commande $imgcreatfrom($imagename)";
break;
}
$dst_img = @$imgcreat($dest_x, $dest_y);
if (!$dst_img) {
echo "<br/>erreur au lancement de la commande $imgcreat($dest_x, $dest_y)";
break;
}
// Resize image
if (!@imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y, $srcsize[0], $srcsize[1])) {
echo "<br/>erreur au lancement de la commande imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y, $srcsize[0], $srcsize[1])";
break;
}
// Output image
@header("content-type: " . $imagemime);
if (!@$imgsnd($dst_img)) {
echo "<br/>erreur au lancement de la commande $imgsnd($dst_img)";
break;
}
$_SESSION['image'] = $imagename ;
// Delete images
@imagedestroy($src_img);
@imagedestroy($dst_img);
break;
}
avec tout ça, vous devriez pouvoir générer vos images facilement 😉
il vous suffit d’ajouter la ligne exemple suivante dans vos fichiers pour voir vos images aléatoirement:
echo imgbox('/images/',178); // prend une image aléatoire du dossier '/images/' et la régénère avec 178pixels de long