トップページ > 画像処理 > ネガ(paletteMap編)



概要

paletteMap()について - paletteMap()でマッピングを行う
ネガのアルゴリズムについて - ネガ(アルゴリズム編)

ネガを行う他の処理方法について
ネガ(ColorMatrixFilter編)
ネガ(ConvolutionFilter編)
ネガ(compare編)


プログラム

private function negative(src:BitmapData):BitmapData
{
	var dest:BitmapData = src.clone();
	var red:Array = [];
	var green:Array = [];
	var blue:Array = [];
	for (var i:int = 0; i < 256; i++)
	{
		red[i] = 255 - i << 16;		// 反転させて16bit左シフト
		green[i] = 255 - i << 8;	// 反転させて8bit左シフト
		blue[i] = 255 - i;		// 反転
	}
 
	dest.paletteMap(src, src.rect, new Point(), red, green, blue);
	return dest;
}
 
paletteMap()で色を反転させます。


適用した画像例です。


検証用コード

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;
	import flash.system.LoaderContext;
	import flash.system.Security;
 
	public class Main extends Sprite
	{
		public function Main()
		{
			Security.loadPolicyFile("http://farm3.static.flickr.com/crossdomain.xml");
			var loader:Loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
			loader.load(new URLRequest("http://farm3.static.flickr.com/2047/2280715132_f0a72c1088.jpg"), new LoaderContext(true));
		}
 
		private function initHandler(event:Event):void
		{
			var loader:Loader = event.currentTarget.loader;
			var bd:BitmapData = new BitmapData(loader.width, loader.height, false);
			bd.draw(loader);
			addChild(new Bitmap(negative(bd)));
		}
 
		private function negative(src:BitmapData):BitmapData
		{
			var dest:BitmapData = src.clone();
			var red:Array = [];
			var green:Array = [];
			var blue:Array = [];
			for (var i:int = 0; i < 256; i++)
			{
				red[i] = 255 - i << 16;
				green[i] = 255 - i << 8;
				blue[i] = 255 - i;
			}
 
			dest.paletteMap(src, src.rect, new Point(), red, green, blue);
			return dest;
		}
	}
}
 

|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|
添付ファイル