概要
プログラム
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;
}
}
}
添付ファイル
このwikiの更新情報RSS