Pomôžem rovno funkciou z MNews, ktorú som niekde našiel a upravil
Kód:
<?php
function resize_img($img, $max_size, $newfilename) {
//Check if GD extension is loaded
if (!extension_loaded('gd') && !extension_loaded('gd2')) {
trigger_error('GD is not loaded', E_USER_WARNING);
return false;
}
//Get Image size info
list($width_orig, $height_orig, $image_type) = getimagesize($img);
switch ($image_type) {
case 1: $im = imagecreatefromgif($img); break;
case 2: $im = imagecreatefromjpeg($img); break;
case 3: $im = imagecreatefrompng($img); break;
default: trigger_error('Unsupported filetype!', E_USER_WARNING); break;
}
if ($width_orig > $height_orig) {
$thumb_width = $max_size;
$aspect_ratio = (float) $height_orig / $width_orig;
$thumb_height = round($thumb_width * $aspect_ratio);
}
else {
$thumb_height = $max_size;
$aspect_ratio = (float) $width_orig / $height_orig;
$thumb_width = round($thumb_height * $aspect_ratio);
}
$newImg = imagecreatetruecolor($thumb_width, $thumb_height);
// Check if this image is PNG or GIF, then set if Transparent
if(($image_type == 1) OR ($image_type==3)) {
imagealphablending($newImg, false);
imagesavealpha($newImg,true);
$transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
imagefilledrectangle($newImg, 0, 0, $thumb_width, $thumb_height, $transparent);
}
imagecopyresampled($newImg, $im, 0, 0, 0, 0, $thumb_width, $thumb_height, $width_orig, $height_orig);
//Generate the file, and rename it to $newfilename
switch ($image_type) {
case 1: imagegif($newImg, $newfilename); break;
case 2: imagejpeg($newImg, $newfilename); break;
case 3: imagepng($newImg, $newfilename); break;
default: trigger_error('Failed resize image!', E_USER_WARNING); break;
}
return $newfilename;
}
?>
Napríklad použitie pri wallpaperoch, kde originálne (veľké) obrázky sú v adresári /images/orig/ a vytvorené 800x600 obrázky ukladáš do /images/800x600/:
Kód:
<?php
$source = './images/orig/wallpaper.jpg'; // súbor, z ktorého chceš zmenšeninu vytvoriť
$target = './images/800x600/wallpaper.jpg'; cesta a názov súboru, kde to chceš uložiť nový zmenšený súbor
resize_img($source, '800', $target);
?>