Уменьшение jpg при аплоаде

voland

Guest
Уменьшение jpg при аплоаде

Решил сделать ресайз картинок при аплоаде их на сервер, для того чтобы выводить превью. Но столкнулся с проблемой.

До того, как я начал изучать ГД я маленькие картинки определял по размеру меньше какого-то кол-ва Кб.
Сейчас я могу получить размер их и заносить в БД уже просто параметр 1 маленькая 0 большая картинка. Почитав побольше я понял, что могу просто при аплоаде уменьшить их до нужного размера. В поиске я нашел как можно переразмерить картинку
PHP:
$img_name = "test.jpg";
$big_img = ImageCreateFromJPEG ("$img_name"); //получаем ссылку на объект В ПАМЯТИ
$small_img = ImageCreate(100,150); //указываешь ширину, высоту какие хочешь получить
$size = GetImageSize("$img_name");
ImageCopyResized($small_img, $big_img, 0, 0, 0, 0, 100, 150, $size[0], $size[1]);
ImageJPEG($small_img);
Тут я правда не понял как сохранить картинку, поэтому потратив ещё время нашел следующие
PHP:
$width = 100; 
$img_source = imagecreatefromjpeg($_FILES['picture']['tmp_name']); 
$fn = $row["Parent"]."_".$_REQUEST["id"].".jpg"; 
// имя файла 
$height = round(imagesy($img_source)/(imagesx($img_source) / $width)); 
$img_desc   = imagecreate($width, $height); // HEIGHT 
imagecopyresized($img_desc, $img_source, 0, 0, 0,0, $width, $height, imagesx($img_source), imagesy($img_source)); 
imagejpeg($img_desc, $fn); 
imagedestroy($img_desc); 
imagedestroy($img_source);
Подскажите пожалуйста, как я могу сохранить картинку под нужным мне именем. И ещё можно ли сделать ресайз с сохранением пропорции?
 

Falc

Новичок
Лучший способ ресайзить картинки ( и не только ресайзить ), утилитка imagemagick
 

tony2001

TeaM PHPClub
>Подскажите пожалуйста, как я могу сохранить картинку под нужным мне именем.
[m]imagejpeg[/m]

>И ещё можно ли сделать ресайз с сохранением пропорции?
арифметку в начальной школе проходил?
сможешь посчитать насколько нужно уменьшить картинку по высоте, если по ширине она уменьшилась на 100px, чтобы сохранить пропорции?
 

voland

Guest
Я к сожалению не в курсе, разъясни пожалуйста, она работает как фотошоп или это утилита ставиться на сервер? В смысле где и как она работает?
 

voland

Guest
До арифметики я не додумался, так наверное и сделаю.
Только вот если пропорции соблюсти нельзя, то можно ли отрезать например со стороны картинки сколько-то для соблюдения их? Как в фотошопе.
 

Falc

Новичок
imagemagick - это пакет утилит для работы с картинками, среди них есть утилитка convert - как раз то что тебе нужно.
Устанавливать нужно на сервер, хотя и дома поставить для оптимизации графики тоже не помешает.
 

tony2001

TeaM PHPClub
Falc
Дело в том, что человек пока не разобрался с Paint, а ты ему советуешь юзать Фотошоп. Когда ему станет нехватать Paint'а - тогда он придет и спросит "а как юзать Фотошоп?".
а пока - твой ответ не в тему (я уже молчу про то, что он и по содержанию нулевой).

voland
ставится на сервере. на хостингах встречается редко.
документацию и файлы смотреть следует здесь: http://imagemagick.org
но я бы начал от простого к сложному, а не наоборот.
 

voland

Guest
Ага, спасибо, вот только интересно дадут ли мне её поставить?
Зашел на сайт проги, но так и не понял что качать, там куча файлов и все чем-то различаються, не подскажите какую лучше скачать для установки в инете и дома под винды?
 

Falc

Новичок
tony2001
А что может быть проще чем imagemagick?
Выполнил 1 строчку в консоли и все готово, так надо париться с толпой функций.
 

tony2001

TeaM PHPClub
voland
>Только вот если пропорции соблюсти нельзя, то можно ли отрезать например
>со стороны картинки сколько-то для соблюдения их? Как в фотошопе
не понял зачем это.
представь себе, что у тебя есть рамка, в которую надо вписать картинку.
вот и уменьшай соотв-но, чтобы эта картинка влезла в эту рамку.
я не вижу на каком этапе тут может возникнуть необходимость отрезать кусок.
 

tony2001

TeaM PHPClub
Falc
>А что может быть проще чем imagemagick?
Зашел на сайт проги, но так и не понял что качать, там куча файлов и все чем-то различаються, не подскажите какую лучше скачать для установки в инете и дома под винды?
>Выполнил 1 строчку в консоли и все готово, так надо париться с толпой функций.
Ага, спасибо, вот только интересно дадут ли мне её поставить?
мне надо что-то говорить?
 

voland

Guest
tony2001
Что более простое? Я просто совсем недавно (час назад) начал этим заниматься и не совсем понимаю от куда ноги растут, сейчас честно читаю про ГД, правда с удивлением обнаружил, что есть ещё и ГД2. Буду рад если подскажешь с чего мне следует начать изучать работу с картинками? От более простого к сложному, если тебя это не затруднит!
 

Falc

Новичок
tony2001
С инсталяцией конечно проблемы, но лучше 1 раз попотеть, и потом не париться при работе с картинками. Причем качество оптимизации jpg'ов у нее гораздо лучше чем у GD.
 

voland

Guest
tony2001
мне надо что-то говорить?
Нет это был чисто риторический вопрос, поскольку кроме прова ответ дать не может никто на 100% верный

Выполнил 1 строчку в консоли и все готово, так надо париться с толпой функций.
К сожалению если бы картинки заливал только я то и фотошоп не проблема, но мне надо, чтобы пользователи могли закачивать картинки на сервер, а чтобы сайт при этом не стал бредовым, то я и решил изучить, как сделать все автоматом!
не понял зачем это.
представь себе, что у тебя есть рамка, в которую надо вписать картинку.
вот и уменьшай соотв-но, чтобы эта картинка влезла в эту рамку.
я не вижу на каком этапе тут может возникнуть необходимость отрезать кусок.
Тут я опять к сожалению сначала написал потом подумал :(
 

tony2001

TeaM PHPClub
>От более простого к сложному, если тебя это не затруднит!
начинать - с мануала, в котором есть масса примеров.
версии GD тебя беспокоить не должны, просто знай, что на данный момент актуальна GD2.
 

Falc

Новичок
>> К сожалению если бы картинки заливал только я то и фотошоп не проблема, но мне надо, чтобы пользователи могли закачивать картинки на сервер
Имел ввиду выполнить 1 строчку в консоли из php.
 

tony2001

TeaM PHPClub
Falc
>Причем качество оптимизации jpg'ов у нее гораздо лучше чем у GD.
ну и что?
он что, про качество спрашивал?
 

Falc

Новичок
tony2001
>>он что, про качество спрашивал?
Да нет это я кслову сказал, просто мне нравится когда сайты быстро грузятся. Да и диск на сервере обычно не резиновый, а если сервер не свой, то за мегабайты еще и платить приходится.
 

voland

Guest
tony2001
он что, про качество спрашивал?
От качества насколько я понимаю зависит размер, наверное мне потом придеться и качество немного урезать, чтоб быстрее грузилось, пока правда мне это действительно неактуально, но для информации пригодиться знать что и это можно сделать!
Falc
Имел ввиду выполнить 1 строчку в консоли из php.
Это мне думаю не подойдет, я же невсегда буду сидеть за компом, хочеться сделать полностью автоматический сайт
 

Falc

Новичок
voland
В PHP есть функция exec, она выпалняет команду, или запускает исполняемый файл.
Так вот после загрузки картинки просто скрипт будет вызывать утилитку convert с нужными параметрами, а она уменьшит размер и с оптимизирует картинку одновремено.
 
Сверху