加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:11:33 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.LinearGradient;i

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

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

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读