Android图片处理类

完整代码:http://yuncode.net/code/c_5063fdf5ad80261

 

001 package com.demo;  

002    

003 import android.graphics.Bitmap;  

004 import android.graphics.Bitmap.Config;  

005 import android.graphics.Canvas;  

006 import android.graphics.LinearGradient;  

007 import android.graphics.Matrix;  

008 import android.graphics.Paint;  

009 import android.graphics.PorterDuff.Mode;  

010 import android.graphics.PorterDuffXfermode;  

011 import android.graphics.Rect;  

012 import android.graphics.RectF;  

013 import android.graphics.Shader.TileMode;  

014    

015 /**  

016  * 图片处理工具类(缩放,圆角,倒影)  

017  *   

018  */ 

019 public class ImageUtils {  

020     /**  

021      * 图片缩放  

022      *   

023      * @param pBitmap  

024      * @param pW  

025      * @param pH  

026      * @return  

027      */ 

028     public static Bitmap zoomBitmap(Bitmap pBitmap, int pW, int pH) {  

029    

030         int _width = pBitmap.getWidth();// 获取原图的宽  

031         int _heigth = pBitmap.getHeight();// 获取原图的高  

032    

033         // 获取缩放比  

034         float _ScaleW = (float) pW / _width;  

035         float _ScaleH = (float) pH / _heigth;  

036    

037         Matrix _Matrix = new Matrix();// 创建Matrix矩阵对象  

038    

039         _Matrix.setScale(_ScaleW, _ScaleH);// 设置宽高的缩放比  

040    

041         return Bitmap.createBitmap(pBitmap, 0, 0, _width, _heigth, _Matrix,  

042                 true);// 对截原图的0,0坐标到_width,_heigth的图片进行_Matrix处理  

043     }  

044    

045     /**  

046      * 图片圆角  

047      *   

048      * @param pBitmap  

049      * @param pRoundpx  

050      * @return  

051      */ 

052     public static Bitmap RoundedCornerBitmap(Bitmap pBitmap, float pRoundpx) {  

053    

054         Bitmap _NewBitmap = Bitmap.createBitmap(pBitmap.getWidth(),  

055                 pBitmap.getHeight(), Config.ARGB_8888); // 创建图片画布大小  

056         Canvas _Canvas = new Canvas(_NewBitmap); // 创建画布  

057         _Canvas.drawARGB(0, 0, 0, 0); // 设置画布透明  

058         Paint _Paint = new Paint(); // 创建画笔  

059         _Paint.setAntiAlias(true); // 抗锯齿  

060         _Paint.setColor(0xff000000);// 画笔颜色透明  

061    

062         // 画与原图片大小一致的圆角矩形  

063         Rect _Rect = new Rect(0, 0, pBitmap.getWidth(), pBitmap.getHeight());  

064         RectF _RectF = new RectF(_Rect);  

065         _Canvas.drawRoundRect(_RectF, pRoundpx, pRoundpx, _Paint);  

066    

067         _Paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置下面张图片与上面张图片的交互模式  

068         _Canvas.drawBitmap(pBitmap, _Rect, _Rect, _Paint);// 画原图到画布  

069         return _NewBitmap;  

070     }  

071    

072     /**  

073      * 图片倒影  

074      *   

075      * @param pBitmap  

076      * @return  

077      */ 

078     public static Bitmap ReflectionImageWithOrigin(Bitmap pBitmap) {  

079         // 创建等宽,高+高/5的画布  

080         Bitmap _NewBitmap = Bitmap  

081                 .createBitmap(pBitmap.getWidth(),  

082                         pBitmap.getHeight() + pBitmap.getHeight() / 5,  

083                         Config.ARGB_8888);  

084         Canvas _Canvas = new Canvas(_NewBitmap);  

085    

086         _Canvas.drawBitmap(pBitmap, 0, 0, null);// 画上原图  

087    

088         // 原图翻转,  

089         Matrix _Matrix = new Matrix();  

090         _Matrix.preScale(1, -1);  

091         Bitmap _Bitmap = Bitmap.createBitmap(pBitmap, 0, 0, pBitmap.getWidth(),  

092                 pBitmap.getHeight(), _Matrix, true);  

093    

094         // 在剩余画布上画上翻转图  

095         _Canvas.drawBitmap(_Bitmap, 0, pBitmap.getHeight(), null);  

096         Paint _Paint = new Paint();  

097    

098         // 实现图片的渐变效果  

099         LinearGradient shader = new LinearGradient(0, pBitmap.getHeight(), 0,  

100                 _NewBitmap.getHeight(), 0x70ffffff, 0x00ffffff, TileMode.CLAMP);  

101         _Paint.setShader(shader);  

102         _Paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  

103         _Canvas.drawRect(0, pBitmap.getHeight(), pBitmap.getWidth(),  

104                 _NewBitmap.getHeight(), _Paint);  

105         return _NewBitmap;  

106     }  

107    

108 } 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值