How can I convert an image into a Base64 string?

前端 未结 14 1182
离开以前
离开以前 2020-11-22 06:52

What is the code to transform an image (maximum of 200 KB) into a Base64 String?

I need to know how to do it with Android, because I have to add the functionali

相关标签:
14条回答
  • 2020-11-22 07:11

    Here is code for image encoding and image decoding.

    In an XML file

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="yyuyuyuuyuyuyu"
        android:id="@+id/tv5"
    />
    

    In a Java file:

    TextView textView5;
    Bitmap bitmap;
    
    textView5 = (TextView) findViewById(R.id.tv5);
    
    bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo);
    
    new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... voids) {
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 70, stream);
            byte[] byteFormat = stream.toByteArray();
    
            // Get the Base64 string
            String imgString = Base64.encodeToString(byteFormat, Base64.NO_WRAP);
    
            return imgString;
        }
    
        @Override
        protected void onPostExecute(String s) {
           textView5.setText(s);
        }
    }.execute();
    
    0 讨论(0)
  • 2020-11-22 07:14

    Convert an image to Base64 string in Android:

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.yourimage);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    
    0 讨论(0)
  • 2020-11-22 07:15
    byte[] decodedString = Base64.decode(result.getBytes(), Base64.DEFAULT);
    
    0 讨论(0)
  • 2020-11-22 07:15

    Use this code:

    byte[] decodedString = Base64.decode(Base64String.getBytes(), Base64.DEFAULT);
    
    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
    
    0 讨论(0)
  • 2020-11-22 07:16

    This code runs perfect in my project:

    profile_image.buildDrawingCache();
    Bitmap bmap = profile_image.getDrawingCache();
    String encodedImageData = getEncoded64ImageStringFromBitmap(bmap);
    
    
    public String getEncoded64ImageStringFromBitmap(Bitmap bitmap) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(CompressFormat.JPEG, 70, stream);
        byte[] byteFormat = stream.toByteArray();
    
        // Get the Base64 string
        String imgString = Base64.encodeToString(byteFormat, Base64.NO_WRAP);
    
        return imgString;
    }
    
    0 讨论(0)
  • 2020-11-22 07:17

    If you're doing this on Android, here's a helper copied from the React Native codebase:

    import java.io.ByteArrayOutputStream;
    import java.io.Closeable;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    
    import android.util.Base64;
    import android.util.Base64OutputStream;
    import android.util.Log;
    
    // You probably don't want to do this with large files
    // (will allocate a large string and can cause an OOM crash).
    private String readFileAsBase64String(String path) {
      try {
        InputStream is = new FileInputStream(path);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        Base64OutputStream b64os = new Base64OutputStream(baos, Base64.DEFAULT);
        byte[] buffer = new byte[8192];
        int bytesRead;
        try {
          while ((bytesRead = is.read(buffer)) > -1) {
            b64os.write(buffer, 0, bytesRead);
          }
          return baos.toString();
        } catch (IOException e) {
          Log.e(TAG, "Cannot read file " + path, e);
          // Or throw if you prefer
          return "";
        } finally {
          closeQuietly(is);
          closeQuietly(b64os); // This also closes baos
        }
      } catch (FileNotFoundException e) {
        Log.e(TAG, "File not found " + path, e);
        // Or throw if you prefer
        return "";
      }
    }
    
    private static void closeQuietly(Closeable closeable) {
      try {
        closeable.close();
      } catch (IOException e) {
      }
    }
    
    0 讨论(0)
提交回复
热议问题