PDA

Просмотр полной версии : Цветовой ключ в AS3


Varlamov_AS
23.12.2011, 11:20
Доброго времени суток.

Возник такой вопрос:
Есть ли в AS3 какое-либо подобие цветового ключа для Bitmap или BitmapData? Если да, то где можно про это почитать, если нет, то как можно сделать это программно?

Заранее спасибо.

BuKT
23.12.2011, 11:39
Вы имеете ввиду программное рисование всяких фракталов в bitmapData? Тогда попробуйте perlinNoise (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#perlinNoise%28%29) и матан вам в помощь

Varlamov_AS
23.12.2011, 11:55
Я плохо разбираюсь в графике, поэтому попробую сказать своими словами. Есть, к примеру, изображение. На нем, к примеру, нарисован какой-то человек, а задний фон - белый. Нужно сделать, чтобы задний белый фон заменялся фоном родительского объекта отображения.

BuKT
23.12.2011, 11:58
color = bitmapData.getPixel(_x,_y);
if (color == 0xffffff) { bitmapData.setPixel32(_x,_y,0x00000000) }

goodguy
23.12.2011, 13:06
http://silin.su/#AS3/bitmap/bucket/bin

но поковыряться однозначно прийдется

gloomyBrain
23.12.2011, 13:16
Хм. Если Вам нужно заменить определенный цвет на прозрачный - то тут я вижу 2 решения:
1) заранее нарисовать с прозрачным фоном (подсказал Кэп)
2) написать шейдер на PixelBender, которому в параметр передавать цвет для замены

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

Varlamov_AS
23.12.2011, 14:31
Я попроовал методом threshold()

_bitmap1 = Bitmap(_tempLoader.content);
_bitmapData = new BitmapData(_bitmap1.bitmapData.width, _bitmap1.bitmapData.height);
_bitmapData.threshold(_bitmap1.bitmapData, _bitmap1.bitmapData.rect, _tempPoint, ">", 0xFFFFFFEE, 0x00000000, 0xFFFFFFFF, true);
_bitmap2.bitmapData = _bitmapData;
_bitmap2.x = _bitmap1.width + 20;
_uiCont.addChild(_bitmap1);
_uiCont.addChild(_bitmap2);

вышло не очень:
http://www.fotolink.su/v.php?id=cf9f4add502e49dd15ecbb4f5056683d
поэтому решил делать просто с прозрачным фоном :)

Добавлено через 46 секунд
http://www.fotolink.su/pic_b/cf9f4add502e49dd15ecbb4f5056683d.png

PainKiller
24.12.2011, 00:44
а блиттинг в вашем случае не подойдет? Вот по такому например рецепту (его кстати можно усложнить и заменять разные цвета):
http://active.tutsplus.com/tutorials/animation/blitting-with-as3-removing-a-bitmaps-background-color/

Vektor
24.12.2011, 00:51
А не проще, использовать (картинку.png) с альфа каналом.

in4core
24.12.2011, 15:30
Vektor на самом деле фигня то интересная в плане - png без фона весит в разу больше чем его fналог jpg c однородным фоном. Поэтому думаю стоит написать класс для замены фона. Что в итоге может реально сократить место сайта, особенно если используются анимируемые 3д объекты без фона!!! Набор картинок как мувиклип, но при этом весщие немного - вы***** однако