вот в таком вот скрипте: while ($new_width>$maxwidth) { $new_width *= 0.99; $new_height *= 0.99; } while ($new_height>$maxheight) { $new_width *= 0.99; $new_height *= 0.99; } получается фотка с максимальным размером по одной из сторон в 99 пикселей. как мне сделать чтобы фото было размером в 150 пикселей?
замена значений на 1.5 не помогает. после загрузки изображения дого думает затем путая страница. другие значения типа 0.150 или 1.50 тоже не помогают.либо пустота либо картинка получается совсем маленькая!
phpthumb, наверное это хорошо, но мне, как не очень продвинутому сложно будет с ним разобраться
вот все:
/******************************************************************************/
// //
// InstantCMS v1.8 //
// www.instantcms.ru/ //
// //
// written by InstantCMS Team, 2007-2010 //
// produced by InstantSoft, (www.instantsoft.ru) //
// //
// LICENSED BY GNU/GPL v2 //
// //
/******************************************************************************/
if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
function img_add_watermark($src){
$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;
$isrc = $icfunc($src);
img_watermark($isrc, $size[0], $size[1]);
// вывод картинки и очистка памяти
imagejpeg($isrc,$src,80);
}
function img_watermark(&$img, $w, $h){
$inConf = cmsConfig::getInstance();
if (!$inConf->wmark) { return; }
$wm_file = $_SERVER['DOCUMENT_ROOT'].'/images/'.$inConf->wmark;
if (!file_exists($wm_file)) { return; }
$size = getimagesize($wm_file);
$wm = imagecreatefrompng($wm_file);
$wm_w = $size[0];
$wm_h = $size[1];
$wm_x = $w — $wm_w;
$wm_y = $h — $wm_h;
imagecopyresampled($img, $wm, $wm_x, $wm_y, 0, 0, $wm_w, $wm_h, $wm_w, $wm_h);
}
/***********************************************************************************
Функция img_resize(): генерация thumbnails
Параметры:
$src — имя исходного файла
$dest — имя генерируемого файла
$width, $height — ширина и высота генерируемого изображения, в пикселях
Необязательные параметры:
$rgb — цвет фона, по умолчанию — белый
$quality — качество генерируемого JPEG, по умолчанию — максимальное (100)
***********************************************************************************/
function img_resize($src, $dest, $maxwidth, $maxheight=160, $is_square=false, $watermark=false, $rgb=0xFFFFFF, $quality=80)
{
if (!file_exists($src)) return false;
$upload_dir = dirname($dest);
if (!is_writable($upload_dir)){ @chmod($dest, 0755); }
$size = getimagesize($src);
if ($size === false) return false;
$new_width = $size[0];
$new_height = $size[1];
if (($new_height @copy($src, $dest);
return true;
}
// Определяем исходный формат по MIME-информации, предоставленной
// функцией getimagesize, и выбираем соответствующую формату
// imagecreatefrom-функцию.
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = «imagecreatefrom». $format;
if (!function_exists($icfunc)) return false;
$isrc = $icfunc($src);
if($is_square){
$idest = imagecreatetruecolor($maxwidth,$maxwidth);
imagefill($idest, 0, 0, $rgb);
// вырезаем квадратную серединку по x, если фото горизонтальное
if ($new_width>$new_height)
imagecopyresampled($idest, $isrc, 0, 0, round((max($new_width,$new_height)-min($new_width,$new_height))/2), 0, $maxwidth, $maxwidth, min($new_width,$new_height), min($new_width,$new_height));
// вырезаем квадратную верхушку по y,
if ($new_width imagecopyresampled($idest, $isrc, 0, 0, 0, 0, $maxwidth, $maxwidth, min($new_width,$new_height), min($new_width,$new_height));
// квадратная картинка масштабируется без вырезок
if ($new_width==$new_height)
imagecopyresampled($idest, $isrc, 0, 0, 0, 0, $maxwidth, $maxwidth, $new_width, $new_width);
} else {
while ($new_width>$maxwidth) { $new_width *= 0.99; $new_height *= 0.99; }
while ($new_height>$maxheight) { $new_width *= 0.99; $new_height *= 0.99; }
$idest = imagecreatetruecolor($new_width, $new_height);
imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]);
}
if ($watermark) { img_watermark($idest, $new_width, $new_height); }
imageinterlace($idest,1);
// вывод картинки и очистка памяти
imagejpeg($idest,$dest,$quality);
imagedestroy($isrc);
imagedestroy($idest);
return true;
}
?>
|
|||||||||||
|
||||||||||||
|
||||||||||||
|
|
Похожие вопросы |