将Base64格式的图像存储到String变量中会出错

时间:2018-03-20 10:18:22

标签: java android base64

我有一个将“bitmap”转换为“Base64”字符串

的函数
public String getBitmapToBase64String(Bitmap bitmap) {
    if (bitmap != null) {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
        byte[] byteArray = byteArrayOutputStream.toByteArray();
        String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
        if (encoded.trim().length() > 0 && encoded != null) {
            return encoded;
        } else {
            return "";
        }
    } else {
        return null;
    }
}

但我怀疑它给了我一个未完成的图像字符串。所以我给图像的字符串变量一个静态值。之后,我运行应用程序,然后我收到此错误。

Error:(652, 21) error: constant string too long

请帮帮我 提前致谢

1 个答案:

答案 0 :(得分:0)

这是因为返回的字符串非常长并且不会存储在字符串变量中。相反,使用它来减少返回到对象的字符串

public String getBitmapToBase64String(Bitmap bitmap) {
if (bitmap != null) {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream.toByteArray();
    String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
    if (encoded.trim().length() > 0 && encoded != null) {

        String CONSTANT = org.apache.commons.lang.StringUtils.join( new String[] {encoded} );

        return CONSTANT;

    } else {
        return "";
    }
} else {
    return null;
}
}