hoceyn
Active Member
من یه کد نوشتم که با استفاده از ماتریس روی عکسها فیلتر اعمال می کنه.چیز های لازم برای اجرا:
1-یک movieClip به اسم loader_mc
2.یک دکمه به اسمloaderbtn
3-یک تکس باکس به اسم address_txt
کافیه یک عکس رو باز کنید و کد زی رو وارد کنید. نمی دونم مشکل چیه که همه جای عکس blur میشه بجز نگهای مشکی
چرا روی رنگ مشکی(و هر جا که رنگ آبی 256) مشکلنمایش داره؟؟؟
1-یک movieClip به اسم loader_mc
2.یک دکمه به اسمloaderbtn
3-یک تکس باکس به اسم address_txt
کافیه یک عکس رو باز کنید و کد زی رو وارد کنید. نمی دونم مشکل چیه که همه جای عکس blur میشه بجز نگهای مشکی
PHP:
import flash.display.BitmapData;
var sharp:Array =
[ 0, -1, 0,
-1, 5, -1,
0, -1, 0];
var blur:Array =
[ 1, 2, 1,
2, 4, 2,
1, 2, 1];
var i:Number;
for(i=0;i<blur.length;i++)
blur[i]=blur[i]*1/16;
loaderbtn.addEventListener(MouseEvent.CLICK, loadonClick);
function loadonClick(evt:MouseEvent):void
{
var myLoader:Loader = new Loader();
myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressStatus);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderReady);
var fileRequest:URLRequest = new URLRequest(address_txt.text);
myLoader.load(fileRequest);
function onProgressStatus(e:ProgressEvent) {
// this is where progress will be monitored
trace(e.bytesLoaded, e.bytesTotal);
}
function onLoaderReady(e:Event) {
var bit:Bitmap = Bitmap(myLoader.content);
bit.bitmapData=matrixapply(bit.bitmapData,blur);
stage.addChild(bit)
}}
function matrixapply(imbmd:BitmapData,matris:Array):BitmapData
{
var bmd:BitmapData=imbmd.clone();
for(var i:Number=1;i<bmd.width;i++)
for(var j:Number=1;j<bmd.height;j++)
{
var color:Array=new Array();
for(var k:Number=-1;k<=1;k++)
for(var l:Number=-1;l<=1;l++)
{
var pixelValue:uint=imbmd.getPixel(i+k, j+l);
var s:String= pixelValue.toString(16);
var r:uint=parseInt(s.substr(0,2),16);
var g:uint=parseInt(s.substr(2,2),16);
var b:uint=parseInt(s.substr(4,2),16);
color.push([r,g,b]);
}
var red:uint = color[0][0]*matris[0]
+ color[1][0]*matris[1]
+ color[2][0]*matris[2]
+ color[3][0]*matris[3]
+ color[4][0]*matris[4]
+ color[5][0]*matris[5]
+ color[6][0]*matris[6]
+ color[7][0]*matris[7]
+ color[8][0]*matris[8];
var green:uint = color[0][1]*matris[0]
+ color[1][1]*matris[1]
+ color[2][1]*matris[2]
+ color[3][1]*matris[3]
+ color[4][1]*matris[4]
+ color[5][1]*matris[5]
+ color[6][1]*matris[6]
+ color[7][1]*matris[7]
+ color[8][1]*matris[8];
var blue:uint= color[0][2]*matris[0]
+ color[1][2]*matris[1]
+ color[2][2]*matris[2]
+ color[3][2]*matris[3]
+ color[4][2]*matris[4]
+ color[5][2]*matris[5]
+ color[6][2]*matris[6]
+ color[7][2]*matris[7]
+ color[8][2]*matris[8];
s=red.toString(16)+green.toString(16)+blue.toString(16)
bmd.setPixel(i,j,parseInt(s,16));
}//for loop
return bmd;
}