1. 程式人生 > >頭像的上傳02

頭像的上傳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展示時大小設定為包裹內容
這裡寫圖片描述