我使用以下代码对位图进行编码:
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()来缩小它的大小