|
|
|
| Здравствуйте. Проблема в следующем. Есть функция для изменения размера изображения в пропорциях, которая сохраняет миниатюру этого изображения. Но вот почемуто напрочь отказывается создавать миниатюру именно ВЕРТИКАЛЬНЫХ изображений. Пол дня сижу. Может подскажете где собака зарыта?
function resizeimg($filename, $smallimage, $w, $h)
{
// Имя файла с масштабируемым изображением
//$filename = $filename;
// Имя файла с уменьшенной копией.
//$smallimage = $smallimage;
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// Если размеры меньше, то масштабирования не нужно
if (($size_img[0]<'350')) return true;
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
$h = round($h);
}
else
{
$w = $h*$src_ratio;
$w = round($w);
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img, $smallimage);
else if ($size_img[2]==1) imagejpeg($dest_img, $smallimage);
else if ($size_img[2]==3) imagepng($dest_img, $smallimage);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
|
| |
|
|
|
|
|
|
|
для: Kaje
(16.03.2012 в 03:54)
| | if (($size_img[0]<'350')) return true; вот это по моему лишнее....
$h = round($h); и $h = round($h); для чего? | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.03.2012 в 04:02)
| | То была мыслишка, что не создается потому что разрешение ставилось не округленное. а в виде 360,79 | |
|
|
|
|
 2.7 Кб |
|
|
для: Kaje
(16.03.2012 в 12:23)
| | кстати, уменьшенная копия вертикального изображения создаётся.... | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.03.2012 в 14:55)
| | Спасибо за совет насчет
if (($size_img[0]<'350')) return true; это какраз то что мешалось. | |
|
|
|
|
|
|
|
для: Kaje
(16.03.2012 в 18:36)
| | ну вроде я вместе с этой строкой функцию запускал.... | |
|
|
|