PDA

Просмотр полной версии : Как сделать маску по контурам произвольной png-ки?


orcpochta
22.01.2009, 17:55
Есть png-ка, которую мы загружаем динамически, поэтому ничего о ней не знаем. Как из нее сделать маску?

Т.е., грубо говоря, есть png-ка с изображением овала, за границами овала прозрачные пиксели. Как сделать программно маску в форме этого овала?

faust.d503
22.01.2009, 18:11
А зачем использовать как маску png? Можно динамически грузить swf.

orcpochta
22.01.2009, 18:19
А зачем использовать как маску png? Можно динамически грузить swf.

можно и руками рисовать маску поверх пнг-ки, но задача стоит вполне конкретная:
Есть png-ка, которую мы загружаем динамически, поэтому ничего о ней не знаем. Как из нее сделать маску?

relevance4
22.01.2009, 18:27
пройтись по всем пикселям, наткнувшись на не прозрачный пиксель записывать его координаты. потом нарисовать по контуру в векторе и применить как маску.

orcpochta
22.01.2009, 18:52
пройтись по всем пикселям, наткнувшись на не прозрачный пиксель записывать его координаты. потом нарисовать по контуру в векторе и применить как маску.

может есть какие-то более стандартные методы?
как-то не хочется писать экономичный алгоритм обхода точек, хотя не спорю, что он может быть довольно-таки простым

chingachgoog
22.01.2009, 20:24
Тут кто-то недавно писал про глюк флеша, когда png задается маской - поищите.

Wolsh
22.01.2009, 20:49
Можно маску и не делать, воспользоваться просто blendMode.

orcpochta
23.01.2009, 16:35
Можно маску и не делать, воспользоваться просто blendMode.

Здорово! Но к сожалению мне, вроде, не подходит.
У меня есть зимняя картинка вид сверху: 2/3 части снег, 1/3 лед.
Есть объекты, которые можно подбирать на земле и кидать: камни и шишки.
Когда объект находится над льдом, он дает отражение, когда над снегом, отражения нет. Для реализации этого эффекта я использую маску по форме льда для мувиклипа с отражением, чтобы видимость отражения была только над льдом (как я понял из вашего примера, необходимого мне маскирования не происходит).
Таким образом вопрос про маску из пнг-ки остается открытым.

Есть еще сопутсвующие вопросы.
1. Я прорисовал руками векторную маску для льда, применил ее к объекту и обрел следующий глюк: при выходе за границы льда отражение как и положено при маскировании пропадает (выход за границы - это значит, что объект залип на мышку и я его двигаю куда угодно), но вот при заходе обратно на лед иногда отражение не появляется пока не отожмешь мышку, чтобы объект "упал", или же проявляется но обрезанное, иногда все нормально. Отражение представляет собой мувиклип с фильтром Blur и блендмодом "overlay".
2. Для каждого объекта надо иметь отдельную маску?