Forum Webscript.Ru
Программирование => PHP => Тема начата: kosm от 29 Января 2004, 14:42:35
-
Ребят, подскажите плиз, можно на лету у картинки углы закруглять с помощью пхп? Просто дизайн требует закругленных краев, а обрабатывать ручками каждую фотку довольно муторно :(
-
Ну да. Лучше PHP напрячь на лишнюю работу при каждом запуске скрипта, чем один раз в фотошопе все сделать :)
-
Diesel
Т.е. это не правильно? Либо ручками до размещения на сйте, либо отказаться от закруглений?
-
kosm
Diesel забыл рассказать тебе о ещё одном варианте: во время загрузки изображения на сервер, обрабатывать его один раз, а затем хранить изображение на сервере с уже закругленными углами.
Сделать это можно функцией [p]imagecopy[/p], копируя четыре изображения с закругленными углами в четыре соответсвующих угла загружаемой картинки. Так же тебе может понадобится фунция [p]imagecolortransparent[/p]. Я сам никогда не делал ничего подобного, но предполагаю, что четыре угла нужно будет сохранить в формате png с альфа-каналом, который будет задавать прозрачность в нужном месте.
-
у джипега нету прозрачности.
-
FreeSpace:
четыре угла нужно будет сохранить в формате png с альфа-каналом
-
FreeSpace А что експлорер уже начал отображать png с альфаканалом? Скорее всего прийдётся юзать гиф или если известно что с бэкграундом ничего не планируется делать - jpg с залитыми углами.
-
FreeSpace ,а при чем здесь формат квадратов-то - я не пойму?
-
Neter
Перечитай внимательнее сообщение.
Я не хочу посылать тебя в "na_tanke" :)
Картинка формируется при помощи GD на стороне сервера.
А браузер получает уже сформированную картинку с закругленными углами в том формате, в каком пожелаешь (и какой поддерживает GD). Скорее всего в jpeg.
-
RomikChef
Да в том-то и дело, что я не работал с прозрачными изображениями в GD и не знаю, можно ли будет задать цвет прозрачности "на лету" в jpeg. Зато я на 100% уверен, что это можно сделать в png и не на лету, а в том же фотошопе. Поэтому и говорил про png.
-
FreeSpace , не надо посылать нетера на танк.
он там был.
твои альфа-каналы - это все трындеж и бутафория, поверь мне.
поскольку картинки на сайте могут быть в джпг, все твои каналы идут лесом. понимаешь? Если нельзя применить метод для всех картинок, то грош ему цена.
Не надо бежать впереди паровоза.
сначла спроси товарища - как он представляяет себе "картинки со скругленными краями", а потом уже бежать овтечать.
Хотя что там особо изобретать - вариант все равно один, ГД рисовать эллипсы, залитые цветом фона сайта
-
RomikChef
Сразу говорю, я не проверял, но в теории алгоритм должен работать с любыми типами изображений.
1. Открываем загружаемую картинку (формат не важен - лишь бы GD поддерживал).
2. Открываем четыре картинки с закругленными углами в формате PNG.
3. Копируем четыре картинки с углами в соответствующие углы загружаемой картинки.
4. Сохраняем обновленную загружаемую картинку в нужном нам формате.
Edited:
Альфа-канал необходим только в процессе копирования уголков на загружаемую картинку. Получившееся изображение можно сохранить в JPEG или любом другом формате без всякого альфа-канала.
-
объясни, родной, какого цвета будут углы?
можно без гд и пхп.
может, хватит уже тупить-то?
-
Какого цвета - это надо у kosm\'а спросить.
Какого надо, такого и будут.
Вот пример:
(http://www.infinity.com.ua/corner.gif)
Картинка правого нижнего угла.
Белая область становится прозрачной, а голубая остается голубой, гармонично вписываясь в дизайн сайта.
Ромик, хватит наезжать.
Ты предлагаешь делать это [p]imagefilledarc[/p] или подобной функцией.
Я согласен с тобой, но если форма угла выходит за пределы обычной кривой, или например содержит какую-либо текстуру, то проще сделать это именно копированием изображений.
-
стоп.
при чем здесь гиф?
я тебе уже битый час толкую про ДЖИПЕГ!
и не наезжаю я на тебя.
Я удивляюсь - как можно так безбожно тупить.
(передразнивая) "беееелая область становится прозрачной".
КАК У ДЖИПЕГА ОБЛАСТЬ СТАНЕТ ПРОЗРАЧНОЙ???
-
FreeSpace Блин, незнаю чем смотрел, мне почему-то показалось что ты прадлагаешь выводить картинки в PNG с альфаканалом, извиняюсь.
А в принцепе чё у вас тут за тёрки? Мне кажется ФриСпейс нормальный вариант предложил, универсальный, его вобще для любых рамок можно использовать.
RomikChef, Ну не был я на твоём танке ;)
В принцепе давайте кончать эти споры о форматах, это всё фигня. Берётся маска и накладывается на изображение. Всё, вся идея.
Осталось только скрипт написать :)
ЗЫ
Посмотрите на сайте автора какие превьюшки маааленькие.. вот мастак, догадался как ресайзить картинки на клиенской стороне :)
-
Neter:
Мне кажется ФриСпейс нормальный вариант предложил
блин еще один.
у вас коллективное помутнение разума?
Ну ладно, если ума не хватает понять про эллипсы - пусть будут ваши чертовы заранее заготовленные углы.
НЕ НЕ ПРОЗРАЧНЫЕ!
потому, что прозрчных джипегов не бывает!
а конвертировать полноцветный джипег в пнг будет только идиот.
К какому из перечисленных положений у вас есть претензии?
-
Ромик, ты только не обижайся.
Я тебя уважаю и списываю всё на то, что у тебя сегодня был тяжелый день.
Так же не отрицаю, что я мог не совсем понятно излагать свои мысли.
Тем не менее, вот в
этом (http://forums.webscript.ru/showthread.php?s=&postid=99543#post99543) сообщении я, кажется, достаточно ясно изложил свой алгоритм, который до тебя не дошел.
Я не собираюсь принимать от пользователя PNG!
Я не собираюсь отдавать пользователю PNG!
Я собираюсь хранить в формате PNG изображения четырех углов и накладывать их на рисунок, загружаемый пользователем.
На входе имеем рисунок, напимер, в формате JPEG. И на выходе тоже JPEG.
Чтобы спор полностью исчерпал себя, я забил на лень реализовал все свои мысли в коде. Я специально взял не обычные уголки, а градиенты, чтобы показать весь потенциал формата PNG.
Сам скрипт:
http://www.infinity.com.ua/ugolki/index.php
Исходники:
http://www.infinity.com.ua/ugolki/index.php?action=sources
-
FreeSpace Че та не работает, гружу жипег а он мне "Мне лень, это не жипег" :) Надо по миме а не по расширению проверять.
А вообще суть не в этом. Ромик тебе объясняет что у JPG нет прозрачности, поэтому ты не сможешь сделать закругленных углов так что бы они выглядили таковыми на любом фоне. Даже если ты подберешь цвет фона, то остается проблема когда фоном является изображение. Выход готовить уголки для каждого фона, либо везде использовать GIF. Не проще ли все же в фотожопе посидеть часок?
-
Ууу, какой спор вышел :) Ребята не сорьтес! :)
Спасибо огромное за советы - я думаю подойдут оба способа, т.к. фон одноцветный, так что настоящей прозрачности особо не требуется (в моем случае). Скорее всего я тогда не совсем точно выразился что мне нужно. По большому счету, нужна однопиксельная рамка с закругленными углами. Какой из способов описанных вами подойдет для этого случая? Здесь соответственно предпочтительная минимальная нагрузка на сервер.
PS: С помощью GD заодно можно и сресайзить под трумбнаилс ведь?
-
господа, прочитал данный топик - просто удивляюсь, как можно так не понимать того, что объясняют...
Роман СОВЕРШЕННО прав!
-
kosm Ты делаешь фотогаллерею? Тогда возьми вариант правки картинки при заливке с помощью GD. Если один раз залил картинки и забыл, то обработай в фотошопе. Вариант с обработкой "налету" даже не рассматривай.
-
professorX , пока товарищ рассуждал о прозрачности - я был прав.
Но когда он изменился на градиент и тому подобное - претензий к нему нет. мы стали писать об одном и том же - наложить уголки заданного цвета.
а уж, откуда они будут - из ффайлов или ГД нарисованные - это вопрос не принципиальный.
принципиальный - только про прозрачность, которая тут вообще не при делах.
-
kosm
можно, но тебя могут ждать проблемы.
воспользуйся поиском по форуму - они тут неоднократно обсуждались
-
RomikChef
я уж понял.
Единственное, чего я не совсем уяснил, это что здесь имеется в виду под обработкой "налету"...
-
RomikChef
Если можно: есть ли где-нибудь нормальные данные того, а сколько именно сьедает обработка картинок на лету? (типа, тесты и все прочее)
По поводу этой статьи:
Знаете, про тех мудрецов и слона?
-
professorX:
что здесь имеется в виду под обработкой "налету"...
Это когда ты, прежде чем отдать картинку пользователю, её каким-то образом обрабатываешь. В данном случае скругляешь углы.
CGVictor:
сколько именно сьедает обработка картинок на лету
Почему сам не протестируешь? Время работы твоего скрипта например. Потом умножь на количество картинок. Еще добавь возможную загруженность сервера. Можно сказать точно лишь одно: Получится медленее чем обрабатывать картинку 1 раз.
-
хорушую картинку обработать - это секунда-полторы.
тебе этого достаточно?
-
RomikChef
В том-то и дело, что "хорошая" - понятие растяжимое... Если мне надо один раз обработать действительно хорошую (300dpi - 21cm - 29,7cm - CMYK :) ) картинку на сервере, сколько это займет времени? Обрабатываю, естественно, не на лету, а один раз. Но как ее обработать - будет зависеть от данных сервера и пользователя...
-
обработай на своем сервере, и посмотри.
у меня ексиф 1600х1200 в 800х600 имэджиком под винды полтора гагагерца третим пнем ресайзится как раз секунду.
-
RomikChef
С этим сложнее...
CMYK-21cmX29,7cm@300dpi ресайзится фотошопом в 200x282 на примерно такой же машине за 4 секунды. А мне нужно его не только ресайзить, но еще и довольно сложную математику реализовать (математика похожа на некоторые из фильтров фотошопа). И потом, моя машина - не показатель... Сервак помощнее будет.
Так никто не знает каких-нибудь обьективных всесторонних тестов по этой теме?
-
CGVictor
Какие могут быть объективные тесты, когда железо на всех серверах разное?
Примерные цифры уже назвали. Если тебе нужно точнее, напиши или возьми готовый класс для бенчмаркинга и тестируй на здоровье.
-
Так никто не знает каких-нибудь обьективных всесторонних тестов по этой теме?
по какой теме?
вот по этой?
сколько именно сьедает обработка картинок на лету?
ДВА КИЛОГРАММА ЯБЛОК!
Сегодня у нас праздник?
День дебила?
во-первых, даже дефективному первокласснику будет ясно, что обработка на лету и не на лету занимает одинаковое количество ресурсов. При на лету просто идет умножение на количество отдаваемых картинок.
Тебе это исследование нужно? Своим умом допереть не мог? Таблицу умножения забыл?
Или сколько съедает одна картинка? Съедает ЧЕГО? памяти? тактов процессора?
какие ты еще тесты хочешь? с каких сторон?
Все умные слова вспомнил? Или еще есть?
Давай, не стесняйся.
А, главное - результат какой?
вопрос в чем?
Для чего тебе результаты "всесторонних тестов" нужны?
Что ты с ними делать будешь?
Вывод сделаешь - на лету ресайзить нельзя? Без тестов, типа, ума не хватает?
-
RomikChef
Спасибо за откровенный флейм. Не можешь сказать ничего умного - не пости сообщения.
Я всё сказал.
-
Ясно, спасибо. Подготавливать картинки при загрузке на сервер - хорошая идея, так и поступлю. Чтобы нарисовать рамку, надо будет только нарисовать рамку в формате PNG, углы закрасить цветом фона.
Где можно почитать по работе с GD, а лучше посмотреть примеры. Как наложить примерно понятно - спасибо огромное за пример FreeSpace.
-
Инормацию по рабоде с GD, как и по любой другой теме, которая касается php, можно почитать в официальном руководстве (http://www.php.net/gd).
-
CGVictor
ого, как мы заговорили.
Ню-ню.
-
kosm в формате png рисовать рамку совсем не обязательно.
ее можно рисовать в любом, который сможет прочесть ГД. Никакой разницы нету.
Я бы даже сказал, что если работать с заготовленной рамкой, то лучше бы иметь рамку того же формата, что и редактируемая картинка. А то, знаешь ли - всякие нюансы там, туда-сюда...
А можно, как я уже говорил, безо всяких рамок, а просто нарисовать нужные фигуры средствами гд. Сдается мне, это будет даже быстрее.