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


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 comment les données de vos commentaires sont utilisées.