Cómo convertir una imagen en una cadena de Base64?

¿Puede alguien decirme el código para transformar una imagen (máximo de 200KB) en la cadena de Base64?

Necesito saber cómo hacerlo con Android, porque tengo que añadir la funcionalidad para subir imágenes a un servidor remoto en mi aplicación principal ponerlos en una fila de la base de datos, como una cadena.

Estoy buscando en google y en StackOverflow, pero no pude encontrar ejemplos fáciles que puedo pagar y también encontrar algunos ejemplos, pero no están hablando de transformar en String. Entonces necesito transformar en la secuencia para cargar por JSON a mi servidor alejado.

Puede utilizar la clase Base64 Android:

String encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT); 

Tendrás que convertir tu imagen en una matriz de bytes sin embargo. He aquí un ejemplo:

 Bitmap bm = BitmapFactory.decodeFile("/path/to/image.jpg"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object byte[] b = baos.toByteArray(); 

* Actualización *

Si está utilizando una biblioteca de SDK más antigua (porque quiere que funcione en teléfonos con versiones anteriores del sistema operativo) no tendrá la clase Base64 empacada (ya que sólo salió en el nivel 8 de API, también conocida como versión 2.2).

Compruebe este artículo para un work-around:

http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html

En lugar de utilizar Bitmap , también puede hacer esto a través de trivial InputStream . Bueno, no estoy seguro, pero creo que es un poco eficiente

 InputStream inputStream = new FileInputStream(fileName);//You can get an inputStream using any IO API byte[] bytes; byte[] buffer = new byte[8192]; int bytesRead; ByteArrayOutputStream output = new ByteArrayOutputStream(); try { while ((bytesRead = inputStream.read(buffer)) != -1) { output.write(buffer, 0, bytesRead); } } catch (IOException e) { e.printStackTrace(); } bytes = output.toByteArray(); String encodedString = Base64.encodeToString(bytes, Base64.DEFAULT); 

Si necesita base64 sobre JSON, echa un vistazo a Jackson : tiene soporte explícito para lectura / escritura de datos binarios como base64 en nivel bajo (JsonParser, JsonGenerator) y nivel de enlace de datos. Así que sólo puede tener POJOs con propiedades byte [], y la codificación / decodificación se gestiona automáticamente. Y bastante eficiente también, debería importar.

Este prefecto de código se ejecuta en mi proyecto

 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 base 64 string String imgString = Base64.encodeToString(byteFormat, Base64.NO_WRAP); return imgString; } 

Si estás haciendo esto en Android , he aquí un ayudante copiado de la base de código React Native :

 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) { } } 
  public static String getFileToByte(String path){ Bitmap bm = null; ByteArrayOutputStream baos = null; byte[] b = null; String encodeString = null; try{ bm = BitmapFactory.decodeFile(path); baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); b = baos.toByteArray(); encodeString = Base64.encodeToString(b, Base64.DEFAULT); }catch (Exception e){ e.printStackTrace(); } return encodeString; } 
 byte[] decodedString = Base64.decode(result.getBytes(), Base64.DEFAULT); 

Utilice este código:

 byte[ ] decodedString = Base64.decode(Base64String.getBytes(), Base64.DEFAULT); Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
  • El archivo Mp3 no se reproduce después de convertir desde byte android
  • Cómo base64 codificar una imagen en javascript
  • Phonegap Plugin: Cómo convertir Base64 String a una imagen PNG en Android
  • Cómo convertir una cadena Base64 en una imagen de BitMap para mostrarlo en un ImageView?
  • ¿Hay alguna diferencia entre Base64.encodeBase64 de Apache y Base64.encode de Android con el indicador Base64.Default?
  • Convertir cadena base64 en imagen en Android
  • Código de Android para convertir la cadena de base64 en mapa de bits
  • Android convertir cadena codificada en base64 en vista de imagen
  • Cálculo del tamaño de Post Content-Length para el archivo codificado en Base64
  • Descodificación de Base64 para image / jpeg; base64 en android
  • La carga / descarga de imágenes de Android con Base64 en JSON provoca errores de memoria insuficiente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.