压缩并设置圆形头像

来源:互联网 发布:数据下载 编辑:程序博客网 时间:2024/06/11 19:29

效果图:这里写图片描述
1.设置布局属性:

<ImageViewandroid:scaleType="fitXY"/>

2.得到指定圆形的Bitmap对象

public static Bitmap circleBitmap(Bitmap source) {int width = source.getWidth();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));canvas.drawBitmap(source, 0, 0, paint);return bitmap;}

3.处理后显示

        Picasso.with(this.getActivity()).load(user.getImageurl()).transform(new Transformation() {            @Override            public Bitmap transform(Bitmap source) {//下载以后的内存中的bitmap对象                //压缩处理                Bitmap bitmap = BitmapUtils.zoom(source, UIUtils.dp2px(62), UIUtils.dp2px(62));                //图形处理                bitmap = BitmapUtils.circleBitmap(bitmap);                //回收bitmap对象                source.recycle();                return bitmap;            }            @Override            public String key() {                return "";            }        }).into(ivMeIcon);

4.压缩图片:

public static Bitmap zoom(Bitmap source,float w,float h){ 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;}