pixelizate practice2
forked from pixelizate practice1 (diff: 15)
ActionScript3 source code
/**
* Copyright k2syndrome_g ( http://wonderfl.net/user/k2syndrome_g )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/3kGY
*/
// forked from k2syndrome_g's pixelizate practice1
// forked from k2syndrome_g's Loader1+filter1 practice
package {
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.filters.ConvolutionFilter;
import flash.geom.Matrix;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.Event;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
// write as3 code here..
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT,init);
loader.load(new URLRequest("http://blog-imgs-21-origin.fc2.com/v/i/p/vipvipblogblog/org12761.jpg"));
}
private function init(event:Event):void{
var loader2:Loader=new Loader();
loader2.contentLoaderInfo.addEventListener(Event.INIT,init2);
loader2.loadBytes(event.currentTarget.bytes);
}
private function init2(event:Event):void{
var loader:Loader=event.currentTarget.loader;
var bitmapdata:BitmapData=new BitmapData(loader.width,loader.height,true,0x0);
bitmapdata.draw(loader);
bitmapdata=pixelizate2(bitmapdata,30);
var bitmap:Bitmap=new Bitmap(bitmapdata);
bitmap.scaleX=bitmap.scaleY=0.3;
bitmap.x=-100;
addChild(bitmap);
}
private function pixelizate(bd:BitmapData,size:int=10):BitmapData{
var dest:BitmapData=bd.clone();
var color:ARGB=new ARGB();
var count:int;
var r:int;
var g:int;
var b:int;
for(var y:int=0;y<bd.height;y+=size){
for(var x:int=0;x<bd.width;x+=size){
count=0;
r=0;
g=0;
b=0;
for(var yy:int=0;yy<size;yy+=1){
for(var xx:int=0;xx<size;xx+=1){
if(x+xx<0||x+xx>=bd.width||y+yy<0||y+yy>=bd.height)continue;
color.setARGB(bd.getPixel(x+xx,y+yy));
r+=color.r;
g+=color.g;
b+=color.b;
count++;
}
}
color.r=r/count;
color.g=g/count;
color.b=b/count;
for(yy=0;yy<size;yy+=1){
for(xx=0;xx<size;xx+=1){
if(x+xx<0||x+xx>=bd.width||y+yy<0||y+yy>=bd.height)continue;
dest.setPixel(x+xx,y+yy,color.getARGB());
}
}
}
}
return dest;
}
private function pixelizate2(bd:BitmapData,size:int):BitmapData{
var dest:BitmapData=pixelizate(bd,size);
var pattern:BitmapData=new BitmapData(size,size,true,0x0);
pattern.fillRect(new Rectangle(size/3,size-1,size,1),0xFF000000);
pattern.fillRect(new Rectangle(size-1,size/3,1,size),0xFF000000);
var canvas:Sprite=new Sprite();
canvas.graphics.beginBitmapFill(pattern);
canvas.graphics.drawRect(0,0,bd.width,bd.height);
canvas.graphics.endFill();
dest.draw(canvas);
return dest;
}
}
}
class ARGB{
public var a:int=0;
public var r:int=0;
public var g:int=0;
public var b:int=0;
public function setARGB(pixel:uint):void{
this.a=pixel>>24&0xFF;
this.r=pixel>>16&0xFF;
this.g=pixel>>8&0xFF;
this.b=pixel&0xFF;
}
public function getARGB():uint{
return this.a<<24|this.r<<16|this.g<<8|this.b;
}
}
