头像的上传02

调用系统相机和相册获取图片后上传到服务器,在从服务器获取展示到本地,用xutils下载,但是从相机拍照上传到服务器的图片下载下来后变成圆形时,会被压扁,从相册上传的下载就没问题。
解决方法:1. xutils下载图片
   BitmapUtils bitmapUtils = new BitmapUtils(Activity_SettingUpLoadavtr_show.this);
    bitmapUtils.display(image_avtr, avatar, new BitmapLoadCallBack<ImageView>() {

                        @Override
                        public void onLoadCompleted(ImageView arg0,
                                String arg1, Bitmap arg2,
                                BitmapDisplayConfig arg3, BitmapLoadFrom arg4) {

                            //将图片变成圆形图片
                            Bitmap roundBitmap = Cicle.toRoundBitmap02(arg2);
                            //将图片进行放大处理
                            Bitmap bitmapToMax = Cicle.bitmapToMax02(roundBitmap);
                            //展示图片
                            Drawable drawable=new BitmapDrawable(bitmapToMax);
                            arg0.setBackgroundDrawable(drawable);

                        }
2. 现在后先将为长方形的图片进行放大到固定尺寸的处理,变成正方形,不然变成的圆形可能会变扁。然后运用Xfermode 做成圆形图片,在根据大小进行缩放或放大。
 Xfermode进行圆形图片的处理
 public static Bitmap toRoundBitmap02(Bitmap bitmap){
         //将长方形进行放大到固定尺寸
        Bitmap bitmapToMax = bitmapToMax(bitmap, 200, 200);
        float radio=250;
        Log.e("cicle", bitmapToMax.getWidth()+"----"+bitmapToMax.getHeight());

        Bitmap bitmapOut=Bitmap.createBitmap(bitmapToMax.getWidth(), bitmapToMax.getHeight(), Bitmap.Config.ARGB_8888); //新的图

        Canvas canvas=new Canvas(bitmapOut);
        Paint paint=new Paint(Paint.ANTI_ALIAS_FLAG);


        if(bitmapToMax.getWidth()>bitmapToMax.getHeight()){
            radio=bitmapToMax.getHeight()/2-5;
        }else{
            radio=bitmapToMax.getWidth()/2-5;
        }
        Log.e("cicle", "radio----"+radio);
          canvas.drawCircle(bitmapToMax.getWidth()/2, bitmapToMax.getHeight()/2, radio, paint);//先花的为上面的dst


        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmapToMax, 0,0, paint); //src
        return bitmapOut;

    }   

3 放大

public static Bitmap bitmapToMax02(Bitmap bitmap){
        Matrix matrix = new Matrix(); 
          matrix.postScale(4.5f,4.5f); //长和宽放大缩小的比例
          Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
          return resizeBmp;

    }

4 注意imageview展示时大小设置为包裹内容
这里写图片描述

猜你喜欢

转载自blog.csdn.net/shuiermengqi/article/details/50721051