我想写一个算法,在将数据发布到android中的数据库之前将图像大小减小到大约1MB。 我的图像是字节数组,我必须将字节数组发送到数据库。
这是我正在尝试的代码,但有时它会在bm.compress(CompressFormat.JPEG,100,bos)中给出内存异常;线。
代码:
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
if (imgData != null) {
if (imgData.length > 1048576) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap bm = BitmapFactory.decodeByteArray(imgData, 0, imgData.length,options);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bm.compress(CompressFormat.JPEG, 100, bos);
bm.recycle();
bm = null;
byte[] data = bos.toByteArray();
ByteArrayBody bab = new ByteArrayBody(data, "image.jpg");
reqEntity.addPart("image_data", bab);
} else {
ByteArrayBody bab = new ByteArrayBody(imgData, "image.jpg");
reqEntity.addPart("image_data", bab);
}
此外我不想使用Bitmap.compress,因为我已经在使用BitmapFactory选项。
提前感谢您的帮助!