[PHP] Обработка изображений

mr82

Можно ли обрабатывать изображения формата jpg и gif посредствам php? Скорее с помощью модулей PHP.
Точнее, можно ли менять их размер и делать чёрно-белыми?

otets-mihail



$resource = '1.jpg'; // Location to your picutre
$im_size = GetImageSize($resource);
$imageWidth = $im_size[0];
$imageHeight = $im_size[1];
$im = imageCreate($imageWidth,$imageHeight);
for ($c = 0; $c < 256; $c++) {
ImageColorAllocate($im, $c,$c,$c);
}
$im2 = ImageCreateFromJpeg($resource);
ImageCopyMerge($im,$im2,0,0,0,0, $imageWidth, $imageHeight, 100);
header("Content-type: image/jpeg");
imagejpeg($im);
imagedestroy($im);

mr82

Хмм... Интересно, попробую. А можешь дать ссылку на мануал этих функций?

mr82

Спасибо.

maggi14

Скажу больше. Можно менять размер изображения и делать ч/б средствами DHTML

psm-home

Это же всё только в IE? Или я чего-то не знаю.

maggi14

Размеры - не только
А цвет - не знаю. В ИЕ точно можно. В других вряд ли. Хотя апплетами или ЭктивХ можно без проблем, но, сами понимаете, РНР воспользоваться проще.

bansek

Я думаю, что прямо в браузере можно обесцветить изображение не только в ИЕ, т.к. это входит в спецификацию css. Копай в сторону фильтров.

maggi14

а фильтры работают не только в ИЕ? Вполне верю, но не знал этого стопроцентно.

Codcod

Вы когда-нибудь пробовали разбирать жигули через выхлопную трубу?
тоже самое...

Ivan826

Млин, броузер тут вообще тут ни с какого боку! PhP открывает картинку, меняет её, и то что получилось выдаёт броузеру. Естественно что одинаковая картинка будет одинакого отображаться во всех броузерах (было бы странно если нет). А меня ть можно почти всё - размер, палитру и т.д. Можно линковать на лету 2 картинки в одну, можно добавлять граф. элементы в картинку, в т.ч. и текст
Смотри сюда:
Мануал по графике в PhP

maggi14

Это ты чего-то не понял. Как работать с каартинками в ПХП, и так все знают. Дело в том, что с картинками можно работать еще и в ЦСС и в ДХТМЛ. Имхо, это более стильно. Только не факт, что все броузеры поймут.

Ivan826

Собственно по этому все картинки и редактируются на стороне сервера :-)
CSS CSS'ом, но четверть функций поддерживается IE, четверть оперой, четверть мозиллой, а четверть никем :-

maggi14

этого-то я и боялся

Ivan826

А чё боятся то? Надёжнее, быстрее и т.д!

maggi14

Надежнее-то надежнее, но не так прикольно. И насчет быстрее ты не прав - быстрее хотя бы часть процессинга перекладывать на клиента.

Ivan826

Ну да, когда у клиента оптика :-)
А когда он сидит на dail-up'е?

mr82

Поймите разницу между реализуемыми задачами. Если обрабатывать картинку на стороне клиента, т.е. браузером, нужно эту картинку как минимум загрузить. Теперь представте ситуацию. Юзер загружает на сервер 1-2Mb фотографию. Серверу необходимо отобразить "список" всех фотографий в виде "эскизов" - маленьких чб изображений. Получается, если обрабатывать все фотографии браузером, этож пока загрузиться страница можно будет чёкнуться! А если обрабатывать поступающие на сервер фоторафии сразу, т.е. создавать эти самые эскизы сразу, эту проблемму можно обойти!

bansek

Пардон, облажался я насчет спецификации:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/filter.asp#filter
Только ИЕ.

rfgbnfy

иногда (правда редко) бывает более важен параметр "загруженность сервера" , более важен чем "объём передаваемых данных" ............. для таких случаев возможность часть работы свалить на клиента бонусна ..........

mr82

Ну не десятками же мегобайт страницы делать? ИМХО самое лучшее решение такой проблемы писать прогу на c++, чтобы она всю обработку изображений проводила. Но это такой геморой, что дубу даться.
Хотя, я с тобой согласен.

maggi14

Да зачем Си++, если ПХП предоставляет для этого набор функций?

mr82

ПХП работает в 10 раз медленне. Т.к. он язык-интепритатор, точее почти интепритатор. А c++ делаеть сразу бинарник.

Petrovich_on_T3

На мой взгляд, так разумнее всего будет - один раз сделать эти эскизы, а потом возвращать браузеру ссылки на них. А эскизы стоит делать силами PHP, потому что в нём для этого придусмотрены функции. Вполне обойдётся и без C++, если только сервер не до безумия загружен.
обрабатывать поступающие на сервер фоторафии сразу, т.е. создавать эти самые эскизы сразу

mr82

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

gsharov

Ага. Я вот доки почитал, но потыкаться не получится пока, поскольку под винды апач и пгп ломает ставить а у линуха загрузчик слетел а восстанавливать тоже ломы. Но так, на абудущее - кто нибудь представляет себе - как сделать средствами пхп (а их должно хватить по идее) Эффект типа "газета" - те grayscale но с эффектом типа "телевизионная трубка" В фотошопе фильтр такой был. Мб просто сделать нормальный грэйскал и маску из точек, а потом из одного другое вычесть? Ну или типа того... ?

voronetskaya

писать прогу на c++, чтобы она всю обработку изображений проводила. Но это такой геморой, что дубу даться.
а в чем проблема-то? уж сишных-то библиотечек под это дело - немеряно!
я вот навскидку вижу готовое решение - если все это дело(апач) под виндой, то можно прям IrfanView заюзать - он умеет с коммандной строкой работать, окошко не показывая =)

mr82

Не, сервер на unix'e, а у меня винда. Так что пока линуск нормально не посавлю буду только через php всё делать. Да и вообще, если делать сайт на бесплатном хосте, там не позволят бинарники просто так запускать.

ppplva

Что-то я сомневаюсь, что библиотеки обработки изображений для php написаны на php.

voronetskaya

на бесплаьном хостинге тебе места не дадут, чтоб много фоток положить
и приоритет там у твоего апача с пхп такой будет, что фотка будет обрабатываться ну очень медленно...
и вообще такое дело лучше где-нить в лабе захостить, если оно конечно не коммерческое...

Fragaria

Если хочешь, могу тебе выделить кусок своего сервака =)
то есть дать ftp-аккаунт, будешь ко мне свои скрипты класть и проверять их работу.
могу даже базу данных тебе сделать

bansek

Полностью согласен с . Имхо торомзов не будет, а фото надо обрабатывать сразу по поступлении.
Оставить комментарий
Имя или ник:
Комментарий: