1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| <?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 "GIF": $srcImage = @ImageCreateFromGIF( $image ); break;
case "jpg": $srcImage = @ImageCreateFromJPEG( $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
$file = pathinfo($image);
$dirname= $file["dirname"];
$basename= $file["basename"];
$extension = $file["extension"];
$basename = str_replace(".$extension", ".mini.$extension", $basename);
//$dest_file = $dirname . "/" . $basename;
$dest_file = $image;
// 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 "GIF": @ImageGif($destImage, $dest_file); break;
case "jpg": @ImageJpeg($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 \"$image\" inexistante ou aucun support ";
// if ($type) {
//
// echo "pour le format $type<br>";
//
// }
// else {
//
// echo "pour ce format de fichier<br>";
//
// }
return FALSE;
}
}
// Execution de la fonction
// $imgurl = RatioResizeImg("chemin", largeur, hauteur)
// echo "<img src=\"$imgurl\">";
?> |
Partager