欢迎来到天天文库
浏览记录
ID:32384760
大小:140.00 KB
页数:3页
时间:2019-02-04
《把彩图变成黑白图》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、其实黑色和白色都是灰色。当灰色达到最亮程度时,就是白色;达到最暗的程度时就是黑色了。将彩图变成黑白图,专业的说应该是转化为灰度图像。在RGB颜色空间中,当R,G,B颜色分量的值相等时,所呈现的颜色就是灰色了(在明白RGB颜色空间的原理之后,这个不难理解)。我们通过对原图的R,G,B分量加权平均计算出具有同等亮度的灰度值来完成这个变化。下面上代码:packageimgChange{importflash.display.Bitmap;importflash.display.BitmapData;publicclassimgTransform{publ
2、icstaticfunctiongreyTransform(srcBMP:Bitmap):Bitmap{varsrcW:Number=srcBMP.width;//获得源图像的宽度varsrcH:Number=srcBMP.height;//获得源图像的高度vardestData:BitmapData=newBitmapData(srcW,srcH);//初始化待填充像素矩阵varsrcData:BitmapData=srcBMP.bitmapData;//得到源图像像素矩阵for(varj:int=0;j3、坐标for(vari:int=0;i4、ay=newArray(Y,Y,Y);//r,g,b合成颜色varcolor:uint=pixelProcess.generateFromRGBComponent(colorArray);//设置目标图像某点的颜色destData.setPixel(i,j,color);}}vardestBMP:Bitmap=newBitmap(destData);returndestBMP;}}}packageimgChange{importflash.display.Bitmap;importflash.display.BitmapData;publiccla5、sspixelProcess{/*输入一个颜色,将它拆成三个部分:*红色,绿色和蓝色*/publicstaticfunctionretrieveRGBComponent(color:uint):Array{varr:Number=(color>>16)&0xff;varg:Number=(color>>8)&0xff;varb:Number=color&0xff;return[r,g,b];}/**红色,绿色和蓝色三色组合*/publicstaticfunctiongenerateFromRGBComponent(rgb:Array):uint{i6、f(rgb==null7、8、rgb.length!=39、10、rgb[0]<011、12、rgb[0]>25513、14、rgb[1]<015、16、rgb[1]>25517、18、rgb[2]<019、20、rgb[2]>255)return0xFFFFFF;returnrgb[0]<<1621、rgb[1]<<822、rgb[2];}}}下面看下效果:package{importflash.display.Sprite;importimgChange.*;importflash.display.Bitmap;importflash.display.BitmapData;publicclassFig23、ureImgextendsSprite{publicfunctionFigureImg(){[Embed(source="风景.jpg")]varLL:Class;varlog:Bitmap=newLL()asBitmap;addChild(imgTransform.greyTransform(log));}}}
3、坐标for(vari:int=0;i4、ay=newArray(Y,Y,Y);//r,g,b合成颜色varcolor:uint=pixelProcess.generateFromRGBComponent(colorArray);//设置目标图像某点的颜色destData.setPixel(i,j,color);}}vardestBMP:Bitmap=newBitmap(destData);returndestBMP;}}}packageimgChange{importflash.display.Bitmap;importflash.display.BitmapData;publiccla5、sspixelProcess{/*输入一个颜色,将它拆成三个部分:*红色,绿色和蓝色*/publicstaticfunctionretrieveRGBComponent(color:uint):Array{varr:Number=(color>>16)&0xff;varg:Number=(color>>8)&0xff;varb:Number=color&0xff;return[r,g,b];}/**红色,绿色和蓝色三色组合*/publicstaticfunctiongenerateFromRGBComponent(rgb:Array):uint{i6、f(rgb==null7、8、rgb.length!=39、10、rgb[0]<011、12、rgb[0]>25513、14、rgb[1]<015、16、rgb[1]>25517、18、rgb[2]<019、20、rgb[2]>255)return0xFFFFFF;returnrgb[0]<<1621、rgb[1]<<822、rgb[2];}}}下面看下效果:package{importflash.display.Sprite;importimgChange.*;importflash.display.Bitmap;importflash.display.BitmapData;publicclassFig23、ureImgextendsSprite{publicfunctionFigureImg(){[Embed(source="风景.jpg")]varLL:Class;varlog:Bitmap=newLL()asBitmap;addChild(imgTransform.greyTransform(log));}}}
4、ay=newArray(Y,Y,Y);//r,g,b合成颜色varcolor:uint=pixelProcess.generateFromRGBComponent(colorArray);//设置目标图像某点的颜色destData.setPixel(i,j,color);}}vardestBMP:Bitmap=newBitmap(destData);returndestBMP;}}}packageimgChange{importflash.display.Bitmap;importflash.display.BitmapData;publiccla
5、sspixelProcess{/*输入一个颜色,将它拆成三个部分:*红色,绿色和蓝色*/publicstaticfunctionretrieveRGBComponent(color:uint):Array{varr:Number=(color>>16)&0xff;varg:Number=(color>>8)&0xff;varb:Number=color&0xff;return[r,g,b];}/**红色,绿色和蓝色三色组合*/publicstaticfunctiongenerateFromRGBComponent(rgb:Array):uint{i
6、f(rgb==null
7、
8、rgb.length!=3
9、
10、rgb[0]<0
11、
12、rgb[0]>255
13、
14、rgb[1]<0
15、
16、rgb[1]>255
17、
18、rgb[2]<0
19、
20、rgb[2]>255)return0xFFFFFF;returnrgb[0]<<16
21、rgb[1]<<8
22、rgb[2];}}}下面看下效果:package{importflash.display.Sprite;importimgChange.*;importflash.display.Bitmap;importflash.display.BitmapData;publicclassFig
23、ureImgextendsSprite{publicfunctionFigureImg(){[Embed(source="风景.jpg")]varLL:Class;varlog:Bitmap=newLL()asBitmap;addChild(imgTransform.greyTransform(log));}}}
此文档下载收益归作者所有