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

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

请帮忙。

提前谢谢。

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

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

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

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

如果你的图像真的太大了,你可以随时使用Bitmap.createScaledBitmap()来缩小它的大小

最新更新