Перейти к содержимому



Пропорциональное ужимание изображений PHP

#1 Вячеслав

Вячеслав
  • Пользователь
  • 357 сообщений
  • Репутация: 0
0

Отправлено 22 Декабрь 2010 - 13:59

Всем привет!
Подскажите пожалусто как пропорционально ужать загружаемое изображение?
Например я гружу картинку размером width=300px height=600px

в скрипте определяю размеры с помощю getimagesize, и далее получая из нее высоту сравниваю, если больше например 450px то ужимаю по высоте до 450px а вот как быть с шириной? каким образом она ужмется?

 

 

  • 0

#2 admin

admin
  • Пользователь PRO
  • 5 272 сообщений
  • Репутация: 54

Отправлено 22 Декабрь 2010 - 14:15

Вячеслав, я в PHP пока слаб, только изучаю понемного. Но попробую побъяснить сам алгоритм, то есть математику :)
Когда загружается изображение, ширину обозначим как X, а высоту как Y.
Если X больше 450 пикселей, то нужно расчитать X/Y=Z и запомнить эту величину. Z - во сколько раз ширина больше (или меньше) высоты.
Далее изменяете размер X до 450 пикселей и расчитываете Y по незамысловатой формуле X/Z, и изменяете до такого размера.

Пока не знаю, можно ли осуществить это же более изящно какой-то функцией в PHP, но такой алгоритм точно должен работать ;)
  • 0

Сколько лет прошло, а ссылки всё ещё лучше покупать тут



#3 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 22 Декабрь 2010 - 14:38

Вячеслав, в чем проблема то?

<?php
$maxHeight = 450;
$size = getimagesize ("img.jpg");
if ($size[1] < $maxHeight) {
$height = $size[1];
$width = $size[0];
} else {
$height = $maxHeight;
$width = round($size[0]*$maxHeight/$size[1]);
}
?>


  • 0

#4 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 22 Декабрь 2010 - 14:51

Спасибо!!! Да кстати а как собственно уменьшить(установить) требуемый размер картинки? Если она находится в tmp

тоесть как установить размеры и потом переместить вот так в нужную папку:

copy($this->file["tmp_name"], ".".$this->path.$this->dirn.'/'.$this->filename);

  • 0

#5 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 22 Декабрь 2010 - 15:02

Например, вот тут обсуждалось Ресайз изображений


  • 0

#6 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 22 Декабрь 2010 - 15:12

Ага все спасибо!!! Вы мне очень помогли!!!! Все получилось супер!
  • 0

#7 admin

admin
  • Пользователь PRO
  • 5 272 сообщений
  • Репутация: 54

Отправлено 22 Декабрь 2010 - 15:54

Вячеслав, всегда пожайлуста ;)
Вы только не пропадайте, заходите к нам на огонёк почаще :)
  • 0

Сколько лет прошло, а ссылки всё ещё лучше покупать тут




Оформление форума – IPBSkins.ru