android图片处理

public class ImageUtils {
 
    /**
     * 图片缩放
     * 
     * @param pBitmap
     * @param pW
     * @param pH
     * @return
     */
    public static Bitmap zoomBitmap(Bitmap pBitmap, int pW, int pH) {
        // 获取原图的宽
        int _width = pBitmap.getWidth();
        // 获取原图的高
        int _heigth = pBitmap.getHeight();
        // 获取缩放比
        float _ScaleW = (float) pW / _width;
 
        float _ScaleH = (float) pH / _heigth;
 
        // 创建Matrix矩阵对象
        Matrix _Matrix = new Matrix();
        // 设置宽高的缩放比
        _Matrix.setScale(_ScaleW, _ScaleH);
 
        // 对截原图的0,0坐标到_width,_heigth的图片进行_Matrix处理
        return Bitmap.createBitmap(pBitmap, 0, 0, _width, _heigth, _Matrix,
                true);
 
    }
 
    /**
     * 圆角图片
     * 
     * @param pBitmap
     * @param pRoundpx
     * @return
     */
    public static Bitmap RoundedCornerBitmap(Bitmap pBitmap, float pRoundpx) {
        // 创建图片画布大小
        Bitmap _NewBitmap = Bitmap.createBitmap(pBitmap.getWidth(),
                pBitmap.getHeight(), Config.ARGB_8888);
        // 创建画布
        Canvas _Canvas = new Canvas(_NewBitmap);
        // 设置画布透明
        _Canvas.drawARGB(0, 0, 0, 0);
        // 创建画笔
        Paint _Paint = new Paint();
        // 抗锯齿
        _Paint.setAntiAlias(true);
        // 画笔颜色透明
        _Paint.setColor(0xff000000);
        // 画与原图片大小一致的圆角矩形
        Rect _Rect = new Rect(0, 0, pBitmap.getWidth(), pBitmap.getHeight());
        RectF _RectF = new RectF(_Rect);
        _Canvas.drawRoundRect(_RectF, pRoundpx, pRoundpx, _Paint);
 
        // 设置下面张图片与上面张图片的交互模式
        _Paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        // 画原图到画布
        _Canvas.drawBitmap(pBitmap, _Rect, _Rect, _Paint);
 
        return _NewBitmap;
    }
 
    /**
     * 倒影
     * @param pBitmap
     * @return
     */
    public static Bitmap ReflectionImageWithOrigin(Bitmap pBitmap) {
        //创建等宽,高+高/2的画布
        Bitmap _NewBitmap = Bitmap
                .createBitmap(pBitmap.getWidth(),
                        pBitmap.getHeight() + pBitmap.getHeight() / 5,
                        Config.ARGB_8888);
        Canvas _Canvas = new Canvas(_NewBitmap);
        //画上原图
        _Canvas.drawBitmap(pBitmap, 0, 0, null) ;
         
        //原图翻转,
        Matrix _Matrix = new Matrix();
        _Matrix.preScale(1, -1);  
        Bitmap _Bitmap  = Bitmap.createBitmap(pBitmap, 0, 0, pBitmap.getWidth(), pBitmap.getHeight(), _Matrix, true) ;
        //在剩余画布上画上翻转图
        _Canvas.drawBitmap(_Bitmap, 0, pBitmap.getHeight(), null) ;
        Paint _Paint = new Paint() ;
        //实现图片的渐变效果 
        LinearGradient shader = new LinearGradient(0,  
                 pBitmap.getHeight(), 0, _NewBitmap.getHeight(), 0x70ffffff, 0x00ffffff, TileMode.CLAMP);  
         _Paint.setShader(shader);  
         _Paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
         _Canvas.drawRect(0, pBitmap.getHeight(), pBitmap.getWidth(), _NewBitmap.getHeight(), _Paint);  
 
         
        return _NewBitmap;
    }

你可能感兴趣的:(android图片处理)