从图库中选择一张大概5兆的图片,然后根据Uri生成Bitmap对象,突然发现生成的Bitmap对象占用内存大小有40多M了,想知道这种情况正常吗?还有我要将这个Bitmap上传到服务器(是通过将Bitmap转换成String以参数的形式通过post上传),这么大也上传不了,压缩又会使图片变得不清晰,请问有什么好的解决办法吗?
public String pconvertIconToString(Bitmap bitmap) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
byte[] Fullfacephoto = byteArrayOutputStream.toByteArray();
return Base64.encodeToString(Fullfacephoto, Base64.DEFAULT);
}
requestParams.addBodyParameter("clientId", clientId);
requestParams.addBodyParameter("telephone", telephone);
requestParams.addBodyParameter("linkMan", linkMan);
requestParams.addBodyParameter("linkManSex", linkManSex.toString());
requestParams.addBodyParameter("shopName", shopName);
requestParams.addBodyParameter("country", country);
requestParams.addBodyParameter("province", province);
requestParams.addBodyParameter("city", city);
requestParams.addBodyParameter("area", area);
requestParams.addBodyParameter("detailAddr", detailAddr);
requestParams.addBodyParameter("busilicenceNo", busilicenceNo);
requestParams.addBodyParameter("shopDescription", shopDescription);
requestParams.addBodyParameter("categoryId", categoryId.toString());
//下面这些是要传的图片
requestParams.addBodyParameter("busilicenceImg", busilicenceImg);
requestParams.addBodyParameter("shopCoverImg", shopCoverImg);
requestParams.addBodyParameter("shopInsideImg_1", shopInsideImg_1);
requestParams.addBodyParameter("shopInsideImg_2", shopInsideImg_2);
通过上述方法将bitmap转换返回一个String作为参数传递,和其他参数一起传递的。请问有人这样上传过图片吗?
一定要将图片读取到 Bitmap 吗?
显示的话,有 Uri 就可以直接显示了。然后文件的话可以直接转 byte 数组,比如:
不过标准做法还是用 File 或者 Uri 构造 MultiPart 的请求体来上传,建议还是和服务端讨论一下。