2014-09-05 139 views
0

如何编码和解码base64格式的任何图像。Android:编码和解码base64

我不知道任何关于base64的东西,刚才我才知道它以String格式保存图像。请解释一下base64以及如何在android编码中使用它。 它会减小图像的大小吗?

在此先感谢...

+0

可能重复(http://stackoverflow.com/questions/4830711/how-to-convert-a-image-into-base64-字符串) – 2014-09-05 18:38:28

回答

0

Base64让您表示ASCII格式的二进制数据,你可以用它来发送/接收图像到端点

编码/解码检查了这两种方法:

public static String getBase64(Bitmap bitmap) 
{ 
    try{ 
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 90, byteArrayOutputStream); 
     byte[] byteArray = byteArrayOutputStream.toByteArray(); 

     return Base64.encodeToString(byteArray, Base64.NO_WRAP); 
    } 
    catch(Exception e) 
    { 
     return null; 
    } 
} 

public static Bitmap getBitmap(String base64){ 
    byte[] decodedString = Base64.decode(base64, Base64.NO_WRAP); 
    return BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
} 
0

要编码的任何文件:

private String encodeFileToBase64(String filePath) 
{ 
    InputStream inputStream = new FileInputStream(filePath);//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(); 
    return Base64.encodeToString(bytes, Base64.DEFAULT); 
} 

解码:[?如何将图像转换成字符串的Base64]

byte[] data = Base64.decode(base64, Base64.DEFAULT); 
+0

它只是将文件转换为其base64表示形式,并避免对图像进行绝对无意义的重新压缩。 – 2014-09-05 18:53:08