Image encoding and Decoding using Base64 in android application

后端 未结 2 1508
忘掉有多难
忘掉有多难 2021-01-06 12:32

In my application I have faced a small issue in encoding and decoding images to String and pass it to web service. After getting the bitmap image, I convert it into

相关标签:
2条回答
  • 2021-01-06 13:10

    In the case of OutOfMemoryError, below code helps me.

    public String BitMapToString(Bitmap bitmap){
            ByteArrayOutputStream baos=new  ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG,100, baos);
            byte [] b=baos.toByteArray();
            String temp=null;
            try{
            System.gc();
            temp=Base64.encodeToString(b, Base64.DEFAULT);
            }catch(Exception e){
                e.printStackTrace();
            }catch(OutOfMemoryError e){
                baos=new  ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.JPEG,50, baos);
                b=baos.toByteArray();
                temp=Base64.encodeToString(b, Base64.DEFAULT);
                Log.e("EWN", "Out of memory error catched");
            }
            return temp;
      }
    

    Basically what i did is : i catch OutofMemoryError and in that catch block i resize it by 50% and then i encode it to string.

    0 讨论(0)
  • 2021-01-06 13:14

    Try My Below Sample Code Of Project

    Bitmap bmp = (Bitmap) data.getExtras().get("data");
    
            img.setImageBitmap(bmp);
            btnadd.requestFocus();
    
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            byte[] b = baos.toByteArray();
            encodedImageString = Base64.encodeToString(b, Base64.DEFAULT);
    
            byte[] bytarray = Base64.decode(encodedImageString, Base64.DEFAULT);
            Bitmap bmimage = BitmapFactory.decodeByteArray(bytarray, 0,
                    bytarray.length);
    
    0 讨论(0)
提交回复
热议问题