<?php

// ------------------------------------------------------------------------- //
// Permet de réduire une image en gardant la hauteur proportionnelle à la    //
// largeur. L'image ne se réduit que si elle dépasse les limites de hauteur  //
// ou de largeur indiquées. Au final l'image est enregistrée sous un nom     //
// aléatoire (et empêche l'écrasement).                                      //
// ------------------------------------------------------------------------- //
// Auteur: NobodX                                                            //
// Email:  icecube@fr.fm                                                     //
// Web:    http://icecube.fr.fm/                                             //
// ------------------------------------------------------------------------- //

/* RatioResizeImg avec (height % width) par NobodX */
/*    Suivant la fonction ResizeGif de tjhunter    */

function RatioResizeImg( $image, $newWidth, $newHeight){

// détéction du type de l'image
eregi("(...)$",$image,$regs); $type = $regs[1];
switch(
$type){
case
"gif": $srcImage = @imagecreatefromgif( $image ); break;
case
"jpg": $srcImage = @imagecreatefromjpeg( $image ); break;
case
"png": $srcImage = @imagecreatefrompng( $image ); break;
default : unset(
$type); break;}

if(
$srcImage){

// hauteurs/largeurs
$srcWidth = imagesx( $srcImage );
$srcHeight = imagesy( $srcImage );
$ratioWidth = $srcWidth/$newWidth;
$ratioHeight = $srcHeight/$newHeight;

// taille maximale dépassée ?
if (($ratioWidth > 1) || ($ratioHeight > 1)) {
if(
$ratioWidth < $ratioHeight){
$destWidth = $srcWidth/$ratioHeight;
$destHeight = $newHeight;
}else{
$destWidth = $newWidth;
$destHeight = $srcHeight/$ratioWidth;}
}else {
$destWidth = $srcWidth;  $destHeight = $srcHeight;}

// resize
$destImage = imagecreate( $destWidth, $destHeight);
imagecopyresized( $destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight,
                                                     
$srcWidth, $srcHeight );

// nom du fichier
$dest_file  = random($dest_file,$type);
while (
file_exists("$dest_file"))
{
$dest_file  = random($dest_file,$type);}

// création et sauvegarde de l'image finale
/* Ici on peut éditer le chemin de sauvegarde ($dest_file) */
switch($type){
case
"gif": @imagegif($destImage, $dest_file); break;
case
"jpg": @imagejpeg($destImage, $dest_file); break;
case
"png": @imagepng($destImage, $dest_file); break;}

// libère la mémoire
imagedestroy( $srcImage );
imagedestroy( $destImage );

// renvoit l'URL de l'image
return $dest_file;}

// erreur
else {echo "Image inexistante ou aucun support ";
        if (
$type){echo "pour le format $type";}
        else {echo
"pour ce format de fichier";}
exit();}}


// nom de fichier suivant la date + nb aléatoire
function random($dest_file,$type){
srand ((double) microtime() * 1000);
$dest_file = date("dhis");
$dest_file .= rand();
$dest_file .= ".$type";
return
$dest_file;}

// Execution de la fonction
// RatioResizeImg("chemin", largeur, hauteur)
$imgurl = RatioResizeImg("1.gif",100,50);
echo
"<img src=\"$imgurl\">";

?>