Android图片处理

Android图片处理

ID:37239215

大小:623.23 KB

页数:12页

时间:2019-05-20

Android图片处理_第1页
Android图片处理_第2页
Android图片处理_第3页
Android图片处理_第4页
Android图片处理_第5页
资源描述:

《Android图片处理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android图片处理(Matrix,ColorMatrix)在编程中有时候需要对图片做特殊的处理,比如将图片做出黑白的,或者老照片的效果,有时候还要对图片进行变换,以拉伸,扭曲等等。这些效果在android中有很好的支持,通过颜色矩阵(ColorMatrix)和坐标变换矩阵(Matrix)可以完美的做出上面的所说的效果。下面将分别介绍这两个矩阵的用法和相关的函数。颜色矩阵android中可以通过颜色矩阵(ColorMatrix类)方面的操作颜色,颜色矩阵是一个5x4的矩阵(如图1.1)可以用来方面的修改图片中RGBA各分量的值,颜色矩阵以一维数组的方式存储如下:[a,b,c,d,

2、e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t]他通过RGBA四个通道来直接操作对应颜色,如果会使用Photoshop就会知道有时处理图片通过控制RGBA各颜色通道来做出特殊的效果。这个矩阵对颜色的作用计算方式如1.3示:矩阵的运算规则是矩阵A的一行乘以矩阵C的一列作为矩阵R的一行,C矩阵是图片中包含的ARGB信息,R矩阵是用颜色矩阵应用于C之后的新的颜色分量,运算结果如下:R'=a*R+b*G+c*B+d*A+e;G'=f*R+g*G+h*B+i*A+j;B'=k*R+l*G+m*B+n*A+o;A'=p*R+q*G+r*B+s*A+t;颜色矩阵并不是看上去那么深

3、奥,其实需要使用的参数很少,而且很有规律第一行决定红色第二行决定绿色第三行决定蓝色,第四行决定了透明度,第五列是颜色的偏移量。下面是一个实际中使用的颜色矩阵。如果把这个矩阵作用于各颜色分量的话,R=A*C,计算后会发现,各个颜色分量实际上没有任何的改变(R'=RG'=GB'=BA'=A)。图1.5所示矩阵计算后会发现红色分量增加100,绿色分量增加100,这样的效果就是图片偏黄,因为红色和绿色混合后得到黄色,黄色增加了100,图片当然就偏黄了。改变各颜色分量不仅可以通过修改第5列的颜色偏移量也可如上面矩阵所示将对应的颜色值乘以一个倍数,直接放大。上图1.6是将绿色分量乘以2变为原来

4、的2倍。相信读者至此已经明白了如何通过颜色矩阵来改变各颜色分量。下面编写一段代码来,通过调整颜色矩阵来获得不同的颜色效果,JavaCode如下:复制到剪贴板Java代码1CMatrix类:2publicclassCMatrixextendsActivity{34privateButtonchange;5privateEditText[]et=newEditText[20];6privatefloat[]carray=newfloat[20];7privateMyImagesv;8@Override9publicvoidonCreate(BundlesavedInstanceStat

5、e){10super.onCreate(savedInstanceState);11setContentView(R.layout.main);1213change=(Button)findViewById(R.id.set);14sv=(MyImage)findViewById(R.id.MyImage);1516for(inti=0;i<20;i++){1718et[i]=(EditText)findViewById(R.id.indexa+i);19carray[i]=Float.valueOf(et[i].getText().toString());20}2122chang

6、e.setOnClickListener(l);23}2425privateButton.OnClickListenerl=newButton.OnClickListener(){2627@Override28publicvoidonClick(Viewarg0){29//TODOAuto-generatedmethodstub30getValues();31sv.setValues(carray);32sv.invalidate();33}3435};36publicvoidgetValues(){37for(inti=0;i<20;i++){3839carray[i]=Floa

7、t.valueOf(et[i].getText().toString());40}4142}434445}46MyImage类继承自View类:47publicclassMyImageextendsView{48privatePaintmPaint=newPaint(Paint.ANTI_ALIAS_FLAG);49privateBitmapmBitmap;50privatefloat[]array=newfloat[20];5152privatefloatmAngl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。