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


Партнерская программа HomeWork

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

#1 Вячеслав

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

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

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

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

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Как обрезать картинку? Нужно уменьшить
  2. Прозрачность и наложение двух изображений
  3. РЕШЕНИЯ задач на PHP для начинающих
  4. Вывод данных в два столбца
  5. Как сжать изображение для WEB для сайта?

#2 admin

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

Отправлено 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
  • Пользователь
  • 368 сообщений
  • Репутация: 2

Отправлено 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
  • Пользователь
  • 368 сообщений
  • Репутация: 2

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

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

#7 admin

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

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

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


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