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