モザイク処理
エフェクト処理にモザイク処理を追加
こちらからどうぞ
ソースは右クリック
モザイク処理の流れは、
一定の範囲内の画素値を同じ値にしていきます。
その値は範囲内の画素値の平均です。
ソース
/* msx,msy モザイクの大きさ(画素数で指定)*/ private function mosaic(msx:int, msy:int):void { if(target_bmpData == null) return; bmpData2 = new BitmapData(target_bmpData.width, target_bmpData.height); var x:int, y:int; var xx:int, yy:int; var sx:int, sy:int; var ex:int, ey:int; var bx:int, by:int; var rr:int, gg:int, bb:int; var mm:int; var mlx:int, mly:int, zzx:int; var col:Color = new Color(); var x1:int, y1:int, x2:int, y2:int; x1 = 0; y1 = 0; x2 = bmpData2.width - 1; y2 = bmpData2.height - 1; if(msx==0) msx = 1; if(msy==0) msy = 1; mlx = (x2-x1+1+msx-1) / msx; mly= (y2-y1+1+msy-1) / msy; zzx = msx / 2; for(y = 0; y < mly; y++) { bx = 0; for(x = bx; x < x2; x += msx) { rr = gg = bb = 0; //同一の画素値にする範囲を計算 sx = x; if(x < 0) sx = 0; sy = y1 + y * msy; ex = x + msx - 1; ey = sy + msy - 1; if(ex > x2) ex = x2; if(ey > y2) ey = y2; for(yy = sy; yy <= ey; yy++) { for(xx = sx; xx <= ex; xx++) { col.color = target_bmpData.getPixel(xx,yy); //画像上の画素情報を取得 rr += col.r; gg += col.g; bb += col.b; } } mm = (ex-sx+1) * (ey-sy+1); if(mm) { rr /= mm; gg /= mm; bb /= mm; col.r = rr; col.g = gg; col.b = bb; for(yy = sy; yy <= ey; yy++) { for(xx = sx; xx <= ex; xx++) { bmpData2.setPixel(xx,yy,col.color); // 画像に値をセットする } } } } } view.bitmapData = target_bmpData = bmpData2; myImage.width = view.width = myImage.width; myImage.height = view.height = myImage.height; }