我使用以下代码编码我的位图:
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;
}
但是这个方法返回一个很长的字符串,因此无法将我的图像上传到服务器。
请帮忙。
提前致谢。
答案 0 :(得分:1)
base64对实际大小没有任何作用。编码将不可避免地增加固定百分比(大约37%IIRC)。
你唯一能做的就是让图像数据更小。您在这里使用了不合理的质量设置:
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
100%质量JPEG是过度杀伤,对于大多数图像,83-90%更合理。如果您需要无损图像质量,请尝试PNG。 JPEG不是为100%质量而设计的,生成的文件很可能比你首先使用无损图像格式时更大。
答案 1 :(得分:0)
如果您的图像太大,您可以随时使用Bitmap.createScaledBitmap()来调整它的大小