[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Пропорциональная миниатюра.
Ramzil_Nixon
$width = 200; // Высота или ширина миниатюры изображения
$w = $GetImage[0]; // Ширина изображения
$h = $GetImage[1]; // Высота изображения
if(max($w, $h) >= $width) // Определяем большую сторону фотографии
{
$w = $w >= $h ? $width : floor($width * ($w / $h)); // Если ширина больше высоты
$h = $w <= $h ? $width : floor($width * ($h / $w)); // Если высота больше ширины
}
echo $w.'x'.$h;


Есть такой код.
КОгда загружаю изображение ширина которой меньше высоты то ширину для миниатюры выдает нормальную.
Но если загружаю изображение, чья ширина больше высоты, то обе стороны у меня по 200х200. В чем тут подвох?
На мой взгляд скрипт правильный



Спустя 22 минуты, 49 секунд (16.05.2012 - 16:17) Ramzil_Nixon написал(а):
Вычеслил что должен вывести скрипт, и он оказывается правильно работает. Только вот я не понимаю, как допустим изображение на 1200 х 778 может размещаться на 200 х 200? Мне надо чтобы пустого место не оставалось

Спустя 1 минута, 26 секунд (16.05.2012 - 16:19) inpost написал(а):
обрезать лишнее. Надо, чтобы минимальная сторона занимала именно 200, а не максимальное.

Спустя 7 минут, 23 секунды (16.05.2012 - 16:26) Ramzil_Nixon написал(а):
inpost, мне надо уменьшать изображение на весь рост.

А самое интересное. Я этот же скрипт написал несколько месяцев назад, и все нормально работало, а теперь не работает.

Цитата (inpost @ 16.05.2012 - 12:19)
обрезать лишнее.


На счет этого у меня еще будет вопросов, думаю очень много когда буду резать квадратные миниатюры smile.gif

Спустя 25 минут, 32 секунды (16.05.2012 - 16:52) Ramzil_Nixon написал(а):
Балин, нашел же ошибку :D
Точнее эту ошибку сам получается как будто специально сделал :)

$w = $w >= $h ? $width : floor($width * ($w / $h)); // Если ширина больше высоты
$h = $w <= $h ? $width : floor($width * ($h / $w)); // Если высота больше ширины

$w же при первом условии приобретает 200, получается что высота бывает больше ширины и тоже присваивается 200 :D

Спустя 1 минута, 54 секунды (16.05.2012 - 16:54) Ramzil_Nixon написал(а):
$width = 200; // Высота или ширина миниатюры изображения
if(max($GetImage[0], $GetImage[1]) >= $width) // Определяем большую сторону фотографии
{
$w = $GetImage[0] >= $GetImage[1] ? $width : ceil($width * ($GetImage[0] / $GetImage[1])); // Если ширина больше высоты
$h = $GetImage[0] <= $GetImage[1] ? $width : ceil($width * ($GetImage[1] / $GetImage[0])); // Если высота больше ширины
}
else // Если миниатюры меньше 200 оба стороны
{
$w = $w; // Ширина
$h = $h; // Высота
}
// *** Начинаем создание миниатюры для страниц, то есть уменьшенный без обрезки оригинал
$image = imagecreatetruecolor($w, $h); // Создаем изображение
$n_image = imagecreatefromjpeg($dirAnName); // Создаем JPEG файл
imagecopyresampled($image, $n_image, 0, 0, 0, 0, $w, $h, $GetImage[0], $GetImage[1]); // Клеим изображение
imagejpeg($image, $MiniAva, 100); // Записываем изображение


Вот теперь работает как надо :)

Спустя 13 минут, 27 секунд (16.05.2012 - 17:07) Ramzil_Nixon написал(а):
Подкиньте пожалуйста идею, а вот как делать если мне ширина нужна постоянно допусти 200 пикселев?
Не смотря на того что ширина больше высоты или наоборот.
Такая же пропорционально сжималось,.

Спустя 21 минута, 39 секунд (16.05.2012 - 17:29) Ramzil_Nixon написал(а):
Уже не надо, разобрался smile.gif


_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.