Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Photoshop, Illustrator, Corel и т.п. > Рисование графики для програм


Автор: VinSmile 19.11.2006, 05:43
Доброго всем времени сутокsmile Незнаю по адресу ли я, но у меня такой вопрос: Я рисую графику для своих приложений в фотошопе, для реализации прозрачных мест я заливаю их цветом 0x00FF00 и тут то начинаються проблемыsmile Дело в том, что фотошоп сглаживает резкие переходы цветов, не сильно, всего лиш на пару пикселей, но этого достаточно чтобы в програме на рисунке появилась зеленая граница, тоесть чистый зеленый убираеться, а вот тот усредненный цвет остаетьсяsmile Как  я не пытался, ничего придумать не смог, приходилось по пол часа сидеть над одним рисунком. А вот сам вопрос, как можно делать заливку чтобы это сглаживание не происходило, это можно реализовать в фотошопе или нужно использовать другой редактор??? Зарание всем спасибо, надеюсь на вашу помощь!!!

Автор: Bitter 19.11.2006, 14:23
Можно написать вспомогательную программку, которая преобразует заданный тобой цвет (или цветовой интервал) в другой цвет. Т.е. если у тебя края рисунка имеют разные оттенки зеленого, нужно программно заменить их на чистый зеленый. Таким образом прогоняешь все рисунки через такую прогу, и всё.

Автор: $tatic 19.11.2006, 15:27
А использовать формат с альфа-каналом (например, PNG) не получится?

Автор: VinSmile 20.11.2006, 01:35
Цитата

Можно написать вспомогательную программку

Я думал про это, но к сожалению ничего не придумал, ведь если просто заменить все оттенки зеленого то получиться фигня полная, во первых - будут рваные края, во вторых если в середине рисунка используються эти же оттенки зеленого, что я получю???
Чтобы написать такую прогу нужно делать глубокий анализ рисунка. находить области чистозеленого, анализировать границу, вычислять порог насыщености при котором цвет менять на чистозеленый, а до этого порога менять на немного темнее или светлее (для этого нужно проверять общюю градацию цвета в этом участке) от соседнего не прозрачного цвета.......... Возможно когда у меня будет три высших образования и я займу первое место на (как минимум областной) олимпеаде по математике, я и напишу такую программу, но не счасsmilesmilesmile
Цитата

А использовать формат с альфа-каналом (например, PNG) не получится?

Получиться, но это ведь обходной вариантsmile Во первых нужно для начала научиться его декодировать, во вторых я не видел ни одной проги которая использовала бы такой вариант.
 Я знаю два метода:
1. Использование маски
2. Вычитание цвета (самое популярное), а ведь если оно самое популярное, то для этого есть причины, да и графику они наверняка без проблем рисуют, а раз рисуют значит есть методы, значит знают как это делать, и может быть зайдут на этот топик и поделяться с нами этим секретомsmilesmilesmile

Автор: arilou 20.11.2006, 10:47

M
arilou
Переместил из игр. Думаю, тут поболее специалистов по фотошопу

Автор: $tatic 20.11.2006, 12:19
Цитата(VinSmile @  20.11.2006,  02:35 Найти цитируемый пост)
Получиться, но это ведь обходной вариантsmile Во первых нужно для начала научиться его декодировать, во вторых я не видел ни одной проги которая использовала бы такой вариант.

А в чем ты пишешь приложения? Вроде бы многие современные платформы "переваривают" альфа-канал.

Автор: Брат Евген 21.11.2006, 10:50
...наверное я чтото не понял.. зачем прозрачность заливать цветом? smile 

Автор: VinSmile 22.11.2006, 19:43
Цитата

А в чем ты пишешь приложения? Вроде бы многие современные платформы "переваривают" альфа-канал.

Причем тут альфаканал, че вы в него так вперлись, будем щитать что я не говорил зачем мне это нужно, просто мне нужно сделать так, чтобы небыло усреднения цветов.
P.S. Если вы писали приложения с рисованим интерфейсом, то я не понимаю откуда у вас такое влечение к альфаканалу?!?!?! Если нет, то можете поверить наслово, он не самый лучший вариант!!!!
P.P.S. Меня интересует ответлиш  на тот вопрос который я поставил, не утруждайте себя набирать ответ если вы этого не знаете!!!
Цитата

...наверное я чтото не понял.. зачем прозрачность заливать цветом?  

Чтобы сделать прозрачность.... ;)

Автор: Брат Евген 22.11.2006, 20:23
...хм, сделал прозрачность в фотошопе, никаких границ зеленых не нашел(((
как ты их делаешь?) 
может на белом фоне рисуешь? попробуй на прозрачном делать ничего заливать не придется...
...или я в самом деле ничего не пАнимаю)))

Автор: Caramel 23.11.2006, 18:12
Цитата(Брат Евген @  22.11.2006,  20:23 Найти цитируемый пост)
...хм, сделал прозрачность в фотошопе, никаких границ зеленых не нашел(((
как ты их делаешь?) 
может на белом фоне рисуешь? попробуй на прозрачном делать ничего заливать не придется...
...или я в самом деле ничего не пАнимаю)))

кажется есть такой метод в гифе - делать на ярком фоне рисунок, который потом вычитается. Хотя конечно легче просто делать с белым фоном, который при сохранении можно выключить smile
Сдается мне, что тут просто нужны нормальные объяснения от VinSmile

Автор: VinSmile 24.11.2006, 01:57
Ладно, попытаюсь обяснить НОРМАЛЬНО... Повторяю ещо раз, что графику я рисую для того чтобы использовать ее в програмах!!! Тоесть я использую свои картинки вместо стандартных кнопок и т.д. Отображаю я их с помощью API функций Windows (если вы не програмист не берите в голову), так вот... Есть такая функция TransparentBlt() которая копирует битовую карту с одного контекста в другой исключая биты заданого цвета, чтобы вы не уговаривали меня применять рисунки с альфаканалом, я вам приведу скорость выполнения этой функции: итак на моих 1,8 гигагерц эта функция прорисовывает рисунок розмером 150х150 сто тысяч раз за 4,1 секунды, даже не пытайтесь мне доказать что вы этого добъетесь с помощю декодирования рисунка с альфаканалом!!! Но!!! Вычитаеться только цвет 0x00FF00 (я использую именно этот, но можно указать любой другой), и если пиксель имеет другой цвет, пусть даже на глаз этого не отличиш, он отобразитсяsmile А фотошоп на границе цветов делает много таких пикселей, вроде как и зеленый но... И тогда и проявляеться эта каемочка(в моей програме, а никак не в фотошопе!!! Как будто я не знаю как в фотошопе прозрачность сделать) Так что мне нужно заставить фотошоп на время забыть что он создан для фотомонтажа, и его привычка все сглажывать отнюдь не улучшаед вид рисунка... Теперь надеюсь достаточно НОРМАЛЬНО???

Автор: Caramel 25.11.2006, 00:02
VinSmile, вполне. 
Не сердитесь, но иногда проблем на столько замыливает глаза, что подробно объяснить даже в голову не приходит. Все кажется очевидным с первого раза. 
Я вам, к сожалению, в вашей проблеме не помогу. Но думаю найдутся люди, которые смогут подсказать дельное решение после вашего объясненияsmile

Автор: Брат Евген 25.11.2006, 13:05
нарисовать на прозрачном фоне и создать ниже слой залитый вашим прозрачным цветом... потом свести в один слой, я думаю должно получится))) smile 

Автор: VinSmile 26.11.2006, 00:09
Неполучилосьsmile

Автор: Брат Евген 2.12.2006, 21:45
...ту тогда я пас... думаю не в фотошопе дело...

Автор: VinSmile 4.12.2006, 01:23
Нашол решение проблемы... Все дело в выделении... Тему прошу закрыть... Есть вопросы??? В ПС...

Устал... Время то познее потому и так короткоsmile

Автор: Caramel 4.12.2006, 15:08
VinSmile, обычно решение проблемы постят прямо в теме. 
Что бы потом не пришлось каждому объяснять какое оно, это решение)
Да и познавательно это будет smile

Автор: VinSmile 4.12.2006, 19:18
Справедливоsmile Решение заключаеться в том чтобы елемент рисунка выделить любым инструментом выделения с выключеным "не грубо" и пером равным нулю... А потом скопировать и вставить на зеленый фон... Вот так вот все простоsmile

Автор: Str!pe 6.12.2006, 20:53
Я предлагаю выложить образец для того что бы было понятнее всем нам о чем идет речь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)