Render.ru

Прозрачные пиксели

#1
Вот столкнулся с такой "простой" задачей:

Есть слой. Там картинка с полностью прозрачными участками.
Так вот у этой картинки по краям полупрозрачные пиксели (с разной степенью прозрачности). Как эту прозрачность с пикселей убрать?

ВСЕ пиксели на картинке должны стать полностью непрозрачными.

Огромное спасибо за ваши ответы.
 
#3
ДОБРЫЙ ДЕНЬ

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

НУ а если есть маска, то тут все просто...........надеюсь понятно как.

Ну а если есть исходное изображение то надо лучше с него заново начинать.

Вообще лучше опиши проблему поподробней, потому что как то не совсем
на 100% ясно что именно надо сделать, есть сомнения.
 
#4
Попробую по-другому рассказать.

Я работаю в игровой индустрии.
Немного теории.
Если игра 2Д то все изображения в ней называются "спрайтами". Грубо говоря, это какая-то картинка на (обычно) светло-зеленом или светло-синем фоне. Это делается для того, чтоб потом сам движек игры (главная программа игры) убрала весь заленый фон, сделав его невидемым. В последствии остается одна картинка. Ее можно перемещать, крутить и т.д.

Обычный способ подготовки изображения (далее графического обьекта ГО) для игры(читай: создание спрайта).

Есть ГО в фотошопе(нарисованый художником), с мягкими краями, анти-алиазинг так и прет со всех сторон. Если сейчас поместить под ним зеленый слой, то края ГО, прозрачные края будут просвечивать зеленым. Ничего не предпринимая всунуть такой ГО в игру, то буде видна светлозеленый ободок вокруг ГО. Чтоб этого избежать сначала под начальный ГО подкладывается черный слой, потом на этом черном слое вырезается все, что не касается нашего главного изображения(без анти-алиайзинга!!!). Теперь прозрачные пиксели - черные. Это клево, но контур черный получается слишком толстый.

Я и подумал, что если убрать одновременно всю прозрачность со всех пикселей это гораздо упростило бы работу над ГО.

Спасибо за ответы!
 
#5
1. Палитра Layers. Сtrl-click на слое с прозрачностью -- получаем мягкое выделение непрозрачности
2. Палитра Channels. Вторая кнопка внизу палитры "Save selection as channel" -- получаем новый альфа канал.
3. Переключаемся на него.
4. Ctrl-D -- снимаем выделение.
5. Image -> Adjustments -> Threshold. Ползунок до упора влево. OK -- получаем жесткую маску всех непрозрачных пикселей (см. примечание).
6. Ctrl-click на канале с маской -- получаем жесткое выделение.
7. Палитра Layers. Создаем слой под слоем с полупрозрачным изображением.
8. Во вновь созданном слое заливаем выделение выбранным цветом (см. примечание).
9. Склеиваем слои.

Примечание:
Поставленная первоначально задача решена, все пиксели имеющие малейшую непрозрачность стали полностью непрозрачными, но контур вокруг объекта будет всегда если выбранный для заливки цвет не совпадает с цветом фона на который будет накладываться спрайт. Поэтому, если спрайт будет накладываться на однотонный фон, то цвет заливки выбирать равным цвету фона, если спрайт будет перемещаться по разным по цвету полям, то пробовать отсекать незначащие пиксели создавая жесткую маску (двигая ползунок в Threshold).
 
#6
Я вот тоже, как ни странно, в игровой индустрии. А движок нельзя переделать, чтобы он альфа-канал понимал? Оно и выглядеть все красивее будет, и возможностей добавится...
Если с этим никак, то лучше всего способ, предложенный FreeStyle. Его и в экшен легко запихнуть, и результат неплохой получается.
 
Сверху