Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.10.2013, 08:02
imagi вне форума Посмотреть профиль Отправить личное сообщение для imagi Найти все сообщения от imagi
  № 1  
Ответить с цитированием
imagi

Регистрация: Oct 2013
Сообщений: 5
Question маска, BitmapData, ColorMatrixFilter

Здравствуйте. У меня следующий вопрос:
Имеются два файла - один черно-белый, формат png. Другой - цветной фон, формат jpg.
Необходимо собрать эти файлы чтобы получился один нормальный рисунок.
Файл с PNG не имеет прозрачных участков.
Есть намек что нужно каким-то образом для этого использовать colorMatrixFilter и BitmapData.applyFilter.
Кто-нибудь сталкивался с подобным? Есть идеи как реализовать подобное?

Старый 02.10.2013, 13:42
am_devcorp вне форума Посмотреть профиль Отправить личное сообщение для am_devcorp Найти все сообщения от am_devcorp
  № 2  
Ответить с цитированием
am_devcorp
 
Аватар для am_devcorp

Регистрация: Jan 2012
Адрес: (0;0;0) относительно меня
Сообщений: 82
Отправить сообщение для am_devcorp с помощью Skype™
А тот чёрно-белый пнг — маска для цветного, я правильно понял?
Если да, то делается это тривиально
__________________
cats are supreme beings

Старый 02.10.2013, 13:43
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 3  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
А сделать это в фотошопе, получить готовый файл, и потом загрузить его в библиотеку, такой вариант почему не устраивает?

Старый 02.10.2013, 14:07
imagi вне форума Посмотреть профиль Отправить личное сообщение для imagi Найти все сообщения от imagi
  № 4  
Ответить с цитированием
imagi

Регистрация: Oct 2013
Сообщений: 5
Цитата:
Сообщение от am_devcorp Посмотреть сообщение
А тот чёрно-белый пнг — маска для цветного, я правильно понял?
Если да, то делается это тривиально
воспользовавшись приведенной вами ссылкой получил такой код:

Код AS3:
package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
	import flash.net.URLRequest;
 
	public class test_loader extends Sprite
	{
		public function test_loader()
		{
			var loader1:Loader = new Loader();
			var loader2:Loader = new Loader();
 
			var myBag:BitmapData;
			var myMask:BitmapData;
			var composite:BitmapData;
 
			loader1.load(new URLRequest("symbol.png"));
			loader2.load(new URLRequest("symbol.jpg"));
 
			loader1.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler1);
			loader2.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler2);
 
			function completeHandler1(event:Event):void {
				myBag = Bitmap(loader1.contentLoaderInfo.content).bitmapData;
				loader1 = null;
				if(loader2 == null) compose();
			}
 
			function completeHandler2(event:Event):void {
				myMask = Bitmap(loader2.contentLoaderInfo.content).bitmapData;
				loader2 = null;
				if(loader1 == null) compose();
			}
 
			function compose():void
			{
				var bmd1:BitmapData = myMask;
				var bmd2:BitmapData = myBag;
 
				bmd2.copyPixels(bmd1, bmd1.rect, new Point());
 
				var bm1:Bitmap = new Bitmap(bmd1);
				addChild(bm1);
				var bm2:Bitmap = new Bitmap(bmd2);
				addChild(bm2);
				bm2.x = 150;
 
			}
		}
	}
}
результат - цветное изображение просто скопировалось без каких-либо изменений.
к сообщению прикреплены примеры исходных изображений.
Изображения
   

Старый 02.10.2013, 14:14
imagi вне форума Посмотреть профиль Отправить личное сообщение для imagi Найти все сообщения от imagi
  № 5  
Ответить с цитированием
imagi

Регистрация: Oct 2013
Сообщений: 5
Цитата:
Сообщение от Fogflasher Посмотреть сообщение
А сделать это в фотошопе, получить готовый файл, и потом загрузить его в библиотеку, такой вариант почему не устраивает?
слишком большое количество изображений не позволяет делать это вручную.

Старый 02.10.2013, 14:22
am_devcorp вне форума Посмотреть профиль Отправить личное сообщение для am_devcorp Найти все сообщения от am_devcorp
  № 6  
Ответить с цитированием
am_devcorp
 
Аватар для am_devcorp

Регистрация: Jan 2012
Адрес: (0;0;0) относительно меня
Сообщений: 82
Отправить сообщение для am_devcorp с помощью Skype™
А какое примерно должно получиться? Синий крест на чёрном фоне?
__________________
cats are supreme beings

Старый 02.10.2013, 14:28
imagi вне форума Посмотреть профиль Отправить личное сообщение для imagi Найти все сообщения от imagi
  № 7  
Ответить с цитированием
imagi

Регистрация: Oct 2013
Сообщений: 5
Цитата:
Сообщение от am_devcorp Посмотреть сообщение
А какое примерно должно получиться? Синий крест на чёрном фоне?
просто синий крест

Старый 02.10.2013, 14:36
am_devcorp вне форума Посмотреть профиль Отправить личное сообщение для am_devcorp Найти все сообщения от am_devcorp
  № 8  
Ответить с цитированием
am_devcorp
 
Аватар для am_devcorp

Регистрация: Jan 2012
Адрес: (0;0;0) относительно меня
Сообщений: 82
Отправить сообщение для am_devcorp с помощью Skype™
Вот так?
Название: ZTUWZigpoan38htX0f3AJhBSa[1].png
Просмотров: 304

Размер: 5.9 Кб

тогда код:
Код AS3:
package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.BitmapDataChannel;
    import flash.display.Sprite;
    import flash.geom.Point;
	public class Main extends Sprite {
		[Embed(source="../bg.jpg")]     //картинка с синим прямоугольником
        private var cbg:Class;
        [Embed(source="../mask.png")]       // чёрно-белая картинка
        private var cmask:Class;
		public function Main():void {
            var bgd:BitmapData = new cbg().bitmapData; //получаем битмапдаты для картинок
            var maskd:BitmapData = new cmask().bitmapData;
            var res:BitmapData = new BitmapData(bgd.width, bgd.height); // создаём битмапдату с прозрачностью
            var b:Bitmap =new Bitmap(res);
            addChild(b);
            res.copyPixels(bgd, bgd.rect, new Point());//кладём в нее картинку фона
            res.copyChannel(maskd,maskd.rect,new Point(),BitmapDataChannel.RED,BitmapDataChannel.ALPHA);//создаем маску 
		}
	}
}
__________________
cats are supreme beings


Последний раз редактировалось am_devcorp; 02.10.2013 в 14:49.
Старый 02.10.2013, 17:02
imagi вне форума Посмотреть профиль Отправить личное сообщение для imagi Найти все сообщения от imagi
  № 9  
Ответить с цитированием
imagi

Регистрация: Oct 2013
Сообщений: 5
Цитата:
Сообщение от am_devcorp Посмотреть сообщение
Вот так?
Похоже на то. Вы меня очень выручили!

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:11.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.