注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

尐鬼じ☆ve伱

和你在一起的日子

 
 
 

日志

 
 

Android中常用的位图操作3 (转)  

2013-01-15 11:04:40|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://www.devdiv.com/Android-Android%E4%B8%AD%E5%B8%B8%E7%94%A8%E7%9A%84%E4%BD%8D%E5%9B%BE%E6%93%8D%E4%BD%9C-thread-127485-1-1.html
三、图片灰化处理

        在Android中可以通过ColorMatrix类实现图像处理软件中的滤镜效果,通过ColorMatrix类可以对位图中的每个像素进行变换处理,达到特殊的滤镜效果,下面通过一个例子来介绍如何通过ColorMatrix对图像进行灰化处理,Java代码如下:

01//图片灰化处理
02    public Bitmap getGrayBitmap() {
03            Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.android);
04            Bitmap mGrayBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Config.ARGB_8888);
05            Canvas mCanvas = new Canvas(mGrayBitmap);
06            Paint mPaint = new Paint();
07             
08            //创建颜色变换矩阵
09            ColorMatrix mColorMatrix = new ColorMatrix();
10            //设置灰度影响范围
11            mColorMatrix.setSaturation(0);
12            //创建颜色过滤矩阵
13            ColorMatrixColorFilter mColorFilter = newColorMatrixColorFilter(mColorMatrix);
14            //设置画笔的颜色过滤矩阵
15            mPaint.setColorFilter(mColorFilter);
16            //使用处理后的画笔绘制图像
17            mCanvas.drawBitmap(mBitmap, 00, mPaint);
18             
19            return mGrayBitmap;         
20    }


        效果如下图所示:

QQ截图20120611152918.png


图7-6  图片灰化处理



四、提取图像Alpha位图

        Android中的ARGB_8888类型的位图由Alpha(透明度)、Red(红)、Green(绿)、Blue(蓝)四部分组成,其中Alpha部分也就是常说的Alpha通道,它控制图像的透明度。在Android中Bitmap类提供了extractAlpha()方法,可以把位图中的Alpha部分提取出来作为一个新的位图,然后与填充颜色后的Paint结合重新绘制一个新图像。下面通过一个例子来说明Bitmap类的extractAlpha()方法的使用,Java代码如下:

01    //提取图像Alpha位图
02    public Bitmap getAlphaBitmap() {
03            BitmapDrawable mBitmapDrawable = (BitmapDrawable) getResources().getDrawable(R.drawable.enemy_infantry_ninja);
04            Bitmap mBitmap = mBitmapDrawable.getBitmap();
05             
06            //BitmapDrawable的getIntrinsicWidth()方法,Bitmap的getWidth()方法
07            //注意这两个方法的区别
08            //Bitmap mAlphaBitmap = Bitmap.createBitmap(mBitmapDrawable.getIntrinsicWidth(), mBitmapDrawable.getIntrinsicHeight(), Config.ARGB_8888);
09            Bitmap mAlphaBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Config.ARGB_8888);
10             
11            Canvas mCanvas = new Canvas(mAlphaBitmap);
12            Paint mPaint = new Paint();
13             
14            mPaint.setColor(Color.BLUE);
15            //从原位图中提取只包含alpha的位图
16            Bitmap alphaBitmap = mBitmap.extractAlpha();
17            //在画布上(mAlphaBitmap)绘制alpha位图
18            mCanvas.drawBitmap(alphaBitmap, 00, mPaint);
19             
20            return mAlphaBitmap;
21    }


QQ截图20120611153327.png

2012-6-13 14:13:06 上传
下载附件(208.67 KB)

图7-7  提取图像Alpha位图



        其中最后一幅图片是把原图片四个边距缩小两个dp,然后与Alpha位图一起绘制的结果,读者可以参考本章Demo中的getStrokeBitmap()方法。
  评论这张
 
阅读(280)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017