package com.atguigu.shoppingmall.utils; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; /** * 图片处理工具类 */ public class BitmapUtils { //提供一个圆形的Bitmap对象 public static Bitmap circleBitmap(Bitmap source) { //获取图片的宽度 int width = source.getWidth(); //创建一个与source等宽的Bitmap对象 Bitmap bitmap = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888); //创建等大小的画布 Canvas canvas = new Canvas(bitmap); //绘制一个圆圈:将此圆圈理解为下层图片 Paint paint = new Paint(); paint.setAntiAlias(true); canvas.drawCircle(width / 2, width / 2, width / 2, paint); //设置图片相交情况下的处理方式 //setXfermode:设置当绘制的图像出现相交情况时候的处理方式的,它包含的常用模式有哪几种 //PorterDuff.Mode.SRC_IN 取两层图像交集部门,只显示上层图像,注意这里是指取相交叉的部分,然后显示上层图像 //PorterDuff.Mode.DST_IN 取两层图像交集部门,只显示下层图像 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); //source:理解为上层图片 canvas.drawBitmap(source, 0, 0, paint); return bitmap; } //图片的压缩 public static Bitmap zoom(Bitmap source,float w ,float h){//参数2,3:不能声明int Matrix matrix = new Matrix(); matrix.postScale(w / source.getWidth(),h / source.getHeight()); Bitmap bitmap = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); return bitmap; } }