| Pashkela |
07.07.2009 18:08 |
PHP код:
<?php
// картинка - http://ru.php.net/images/php.gif
/* Вырезаем нужную часть */
$src = imagecreatefromgif('php.gif');
$dest = imagecreatetruecolor(80, 40);
imagecopy($dest, $src, 0, 0, 20, 13, 80, 40);
imagegif($dest, "php1.gif");
imagedestroy($dest);
imagedestroy($src);
/* Делаем ресайз вырезанной части */
resize("php1.gif", 60, "php2.gif"); // Результат в php2.gif
unlink('php1.gif'); // Удаляем промежуточный результат
echo "Result in php2.gif";
// Функция для ресайза
function resize($img, $thumb_width, $newfilename)
{
$max_width=$thumb_width;
if (!extension_loaded('gd') && !extension_loaded('gd2')){
trigger_error("GD is not loaded", E_USER_WARNING);
return false;
}
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;
}
$aspect_ratio = (float) $height_orig / $width_orig;
$thumb_height = round($thumb_width * $aspect_ratio);
while($thumb_height>$max_width){
$thumb_width-=10;
$thumb_height = round($thumb_width * $aspect_ratio);
}
$newImg = imagecreatetruecolor($thumb_width, $thumb_height);
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);
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;
}
?>
|