Faire des miniature d'image, des photos pour les profils

Description

j'ai utiliser la librairie GD de php 5éme version je crois ..

De plus je me suis permis d'utiliser un système de mise en cache de l'image, cela permet d'accélérer 'un peu' le processus'

Source / Exemple :


<?php
if(!ob_start("ob_gzhandler")) ob_start();
header("Cache-Control: max-age=(3600*24*7*31)"); 
$expires = date("r",time()+(3600*24*7*31))." GMT";
header("Expires: $expires"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s",filemtime($_SERVER["SCRIPT_FILENAME"])) . " GMT");
header('Content-type: image/jpeg');
 
if(isset($_GET['src'])){$source = $_GET['src'];}else{$source=null;}
//on met la source (url)

if(isset($_GET['q'])){$qualite = $_GET['q'];}else{$qualite = 80;}
//on entre la qualité voulus
//plus la qualité est médiocre, plus le processus est rapide !

//avec une limite tout de même
if($qualite>100){$qualite=100;}

if(isset($_GET['e'])){$ext = $_GET['e'];}
        else if($source != null){$ext= strtolower(substr($source,(strlen($source)-3),3));}

$largeur_mini=150;
switch(strtolower($ext)){
case "jpg" :
  $image_origine = imagecreatefromjpeg($source);
  break;
case "gif" :
  $image_origine = imagecreatefromgif($source);
  break;
case "tiff" :
  $image_origine = imagecreatefromtiff($source);
  break;
case "fif" :
  $image_origine = imagecreatefromfif($source);
  break;
case "ief" :
  $image_origine = imagecreatefromief($source);
  break;
case "bmp" :
  $image_origine = imagecreatefromwbmp ($source);
  break;
default :
  $image_origine = imagecreatefrompng($source);
  break;
}
  $largeur_origine = imagesx($image_origine);
  $hauteur_origine = imagesy($image_origine);
  if($largeur_origine>$largeur_mini){
  $hauteur_mini = $hauteur_origine * $largeur_mini /   $largeur_origine;
  $image_finale = imagecreatetruecolor($largeur_mini, $hauteur_mini);
  ImageCopyResampled($image_finale, $image_origine, 0, 0, 0, 0,   $largeur_mini, $hauteur_mini, imagesx($image_origine), imagesy($image_origine) );
  }
  else{$image_finale = imagecreatetruecolor($largeur_origine, $hauteur_origine);
  ImageCopyResampled($image_finale, $image_origine, 0, 0, 0, 0,   $largeur_origine, $hauteur_origine, imagesx($image_origine), imagesy($image_origine) );
  }
  imagejpeg($image_finale,"",$qualite);
  imagedestroy($image_finale);
header("Content-Length: ".ob_get_length());
ob_end_flush();
?>

Conclusion :


à vous d'en juger !

Codes Sources

A voir également