|
|
|
|
|
для: GAV
(22.06.2007 в 15:22)
| |
<?
// Загрузка файла на сервер;
...
// $src - имя файла;
// $width - новый размер изображения;
// Цвет фона;
$rgb=0xFFFFFF;
// Качество изображения;
$quality=100;
if (!file_exists($src)) return false;
$size = getimagesize($src);
if ($size === false) return false;
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;
(int)$height = $size[1] * $width / $size[0];
$x_ratio = $width / $size[0];
$y_ratio = $height / $size[1];
$ratio = min($x_ratio, $y_ratio);
$use_x_ratio = ($x_ratio == $ratio);
$new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
$new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
$new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
$isrc = $icfunc($src);
$idest = imagecreatetruecolor($width, $height);
imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
$new_width, $new_height, $size[0], $size[1]);
$white = ImageColorAllocate($idest, 255, 255, 255);
// Перезапись файла;
$fh=fopen($src,'w');
fclose($fh);
imagejpeg($idest, $src, $quality);
imagedestroy($isrc);
imagedestroy($idest);
return true;
?>
|
Если надо не переписывать файл, а создать другой (уменьшенную копию), то нужно изменить строку $fh=fopen($src,'w'); на $fh=fopen($src.'_min','w'); | |
|
|
|
|
|
|
|
для: GAV
(22.06.2007 в 15:22)
| | Вот http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145
Попробуйте также поиск по "уменьш картинк" ... только логику на "и" поменяйте... | |
|
|
|
|
|
|
| Есть необходимость предоствить пользователям загружать фотографии на сайт (своего рода мини фотоальбомчик). И конечно же фотографии бывают разного размера. А как хочется чтобы выдовались маленькие картиночки для предварительного просмотра и большие если пользователь захочет посмотреть поближе. Можно конечно это решить предоствив пользователю два поля для загрузки, мальньких и больших изображений. Но это требует от пользователя лишних усилий и определенных навыков работы с изображениями. Можно просто взять и задать в теге <img> параметры размера изображения и тогда большое изображение сожмется, но это тоже не годится, т.к. большие изображения могут весить не 1Мб и не 2Мб, тяжеловато выйдет если на странице вывести 9 фотографий по 2Мб. Тогда в голову приходит третий способ, а можно ли при загрузке одной фотографии делать ее аналог, но меньшего размера и выдавать за маленькое изображение? Ну например как-то установить большую сторону изображения, допустим равной 100рх с пропорциональным уменьшением другой стороны. Может кто из специалистов знает как это сделать. Или предложит еще какой способ(хотя меня больше интересует именно этот =) )? | |
|
|
|
|