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&#91;'DOCUMENT_ROOT'&#93; . '/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&#91;'DOCUMENT_ROOT'&#93; . $chemin)) {
                $imagename = $_SERVER&#91;'DOCUMENT_ROOT'&#93; . $chemin ;
        }
        // si c'est un r�pertoire
        elseif (is_dir($_SERVER&#91;'DOCUMENT_ROOT'&#93; . $chemin)) {
                // repertoire contenant les images
                $rep = $_SERVER&#91;'DOCUMENT_ROOT'&#93; . $chemin;
                $files = getFiles($rep);
 
                // on en prend une au hazard
                srand((float) microtime() * 10000000);
                $rand_keys = array_rand($files,1);
                $imagename = $files&#91;$rand_keys&#93;;
        }
        // sinon
        else {
                return "format non valide";
        }
        $url = str_replace($_SERVER&#91;'DOCUMENT_ROOT'&#93;,'',$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

 Laisser un commentaire

Vous pouvez utiliser ces tags et attributs HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(requis)

(requis)

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.