Base64编码的位图返回冗长的字符串

时间:2014-02-11 19:21:53

标签: java android encoding bitmap base64

我使用以下代码编码我的位图:

public static String convertBitmapToBase64String(Bitmap bitmap) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    String encodedImage = null;
    try {
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] byteArrayImage = baos.toByteArray();

        encodedImage = Base64
                .encodeToString(byteArrayImage, Base64.DEFAULT);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return encodedImage;
}

但是这个方法返回一个很长的字符串,因此无法将我的图像上传到服务器。

请帮忙。

提前致谢。

2 个答案:

答案 0 :(得分:1)

base64对实际大小没有任何作用。编码将不可避免地增加固定百分比(大约37%IIRC)。

唯一能做的就是让图像数据更小。您在这里使用了不合理的质量设置:

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

100%质量JPEG是过度杀伤,对于大多数图像,83-90%更合理。如果您需要无损图像质量,请尝试PNG。 JPEG不是为100%质量而设计的,生成的文件很可能比你首先使用无损图像格式时更大。

答案 1 :(得分:0)

如果您的图像太大,您可以随时使用Bitmap.createScaledBitmap()来调整它的大小