Java Base64编码位图返回长字符串

Java Base64编码位图返回长字符串,java,android,encoding,bitmap,base64,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);

我使用以下代码对位图进行编码:

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

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

请帮忙


提前感谢。

如果您的图像太大,您可以始终使用Bitmap.createScaledBitmap()将其调整得更小。

base64对实际大小无能为力。编码将不可避免地将大小增加固定的百分比(约37%IIRC)

你唯一能做的就是缩小图像数据。您在此处使用的质量设置不合理:

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

100%质量的JPEG是多余的,83-90%对于大多数图像更合理。如果需要无损图像质量,请尝试PNG。JPEG不是为100%质量而设计的,生成的文件很可能会比最初使用无损图像格式的文件大。

我猜你的图像很大?你希望它做什么?我们无法神奇地将图像大小或其Base-64表示的大小变小。”但此方法返回一个很长的字符串“是的,这是因为图像文件通常都很大。这就是野兽的本性。如果您指定的质量值为100,则没有帮助…将图像编码为Base64会产生图像的字符串大小+~30%的开销为什么不发送图像字节而发送Base64字符串?