Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将字节数组图像大小减少到1MB的算法_Android - Fatal编程技术网

Android 将字节数组图像大小减少到1MB的算法

Android 将字节数组图像大小减少到1MB的算法,android,Android,我想写一个算法,将图像大小减少到1MB左右,然后再将数据发布到android中的数据库中。 我的图像是字节数组,我必须将字节数组发送到数据库 下面是我正在尝试的代码,但有时它会在bm.compress(CompressFormat.JPEG,100,bos)中出现内存不足异常;线路 代码: 此外,我不想使用Bitmap.compress,因为我已经在使用BitmapFactory选项 提前谢谢你的帮助 使用100作为质量设置可能会导致非常大的JPEG-我从90开始,尝试使用较低的设置,直到获得正

我想写一个算法,将图像大小减少到1MB左右,然后再将数据发布到android中的数据库中。 我的图像是字节数组,我必须将字节数组发送到数据库

下面是我正在尝试的代码,但有时它会在bm.compress(CompressFormat.JPEG,100,bos)中出现内存不足异常;线路

代码:

此外,我不想使用Bitmap.compress,因为我已经在使用BitmapFactory选项


提前谢谢你的帮助

使用100作为质量设置可能会导致非常大的JPEG-我从90开始,尝试使用较低的设置,直到获得正确的速度/质量权衡。@Paul-我尝试了90,实际图像大小为1.2MB,这次我没有用完内存,图像大小减少到.8MB。问题是,相机的实际图像大小不同,有时是1.2MB,有时是1.8MB,而且不同的手机有不同的相机,可能会有更大的尺寸,我在寻找一个算法。好吧,你可以在代码中做同样的事情。从90开始。如果大于1MB,请尝试降低。如果小于1MB且小于源,请尝试较大的。
        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);
             }