Android:Encode&解码base64

时间:2014-09-05 18:36:23

标签: android image base64

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

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

提前致谢...

2 个答案:

答案 0 :(得分:1)

编码任何文件:

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);
}

解码:

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

答案 1 :(得分: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);
}