各行はそれぞれ、元画像、置き換えマップの適用後の画像、置き換えマップ画像になっている。
package {
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
[SWF(width='500',height='600',backgroundColor='0xffffff')]
public class Main extends Sprite {
[Embed(source="lena.jpg")]
private var myImage:Class;
public function Main( ) {
transformByDMF(0, createMap);
transformByDMF(1, createMap2);
transformByDMF(2, createMap3);
transformByDMF(3, createMap4);
}
private function transformByDMF(i:int, f:*):void{
var bm1:Bitmap = new myImage();
var bm2:Bitmap = new myImage();
addChild(bm1);
bm2.x = bm1.width + 10;
bm1.y = bm2.y = (bm1.height+10)*i;
addChild(bm2);
var bmd:BitmapData = f(bm1.width, bm1.height);
var f2:DisplacementMapFilter = new DisplacementMapFilter(bmd, new Point(0,0),
BitmapDataChannel.BLUE,BitmapDataChannel.BLUE, 100,0,"color",0x0);
bm2.filters = [f2];
var bm3:Bitmap = new Bitmap(bmd);
bm3.x = bm1.width + bm2.width + 20;
bm3.y = bm1.height*i + 10*i;
addChild(bm3);
}
private function createMap(width:int, height:int):BitmapData{
var bmp:BitmapData = new BitmapData(width, height, false, 0xffffff);
for(var j:int = 0; j < height; j++){
for(var i:int = 0; i < width; i++){
var col:int;
if(j < height/3)
col = 0;
else if(j < height*2/3)
col = 128;
else col = 255;
bmp.setPixel(i, j, col);
}
}
return bmp;
}
private function createMap2(width:int, height:int):BitmapData{
var bmp:BitmapData = new BitmapData(width, height, false, 0xffffff);
for(var j:int = 0; j < height; j++){
for(var i:int = 0; i < width; i++){
var col:int = 256/height * j;
bmp.setPixel(i, j, col);
}
}
return bmp;
}
private function createMap3(width:int, height:int):BitmapData{
var bmp:BitmapData = new BitmapData(width, height, false, 0xffffff);
for(var j:int = 0; j < height; j++){
for(var i:int = 0; i < width; i++){
bmp.setPixel(i, j, 64*Math.sin(Math.PI*2/height*j) + 128);
}
}
return bmp;
}
private function createMap4(width:int, height:int):BitmapData{
var bmp:BitmapData = new BitmapData(width, height, false, 0xffffff);
for(var j:int = 0; j < height; j++){
for(var i:int = 0; i < width; i++){
var y:Number = height/2 - (j+1);
var a:Number = width;
var b:Number = height/2;
// yに対応するx
var x:Number = Math.sqrt(a*a*(b*b-y*y)/(b*b));
var l:Number = 128*(2-x/width);
bmp.setPixel(i, j, l);
}
}
return bmp;
}
}
}
Author:yamasv@gmail.com
コメント、トラックバック、リンクはお気軽に
-->
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| - | - | - | - | - | 1 | 2 |
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | - | - | - | - | - | - |