"Android中图片质量压缩方案详解,实现图片压缩不降低像素"。

0 下载量 46 浏览量 更新于2024-01-31 收藏 72KB DOC 举报
Android中有多种图片压缩方案可以用来处理图片,其中一种是质量压缩法。这种方式的实现是通过设置bitmap options属性来降低图片的质量,而不会减少像素。首先传入需要压缩的bitmap图片对象和压缩后图片保存的位置,然后设置options属性为0-100来实现压缩。 一个典型的质量压缩方法的实现如下: ``` private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, baos); int options = 100; while (baos.toByteArray().length / 1024 > 100) { baos.reset(); image.compress(Bitmap.CompressFormat.JPEG, options, baos); options -= 10; } ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray()); Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null); return bitmap; } ``` 这段代码中,首先将原始图片对象压缩到baos中,然后通过循环判断压缩后的图片大小是否大于100kb,如果大于则继续压缩。在循环中每次压缩时,都会重置baos,重新将压缩后的图片数据存入其中,然后降低压缩质量参数options。最终将baos中的数据转换为Bitmap对象返回。 需要注意的是,质量压缩法虽然可以减小图片文件的大小,但并不会减少图片的像素。因此,如果需要显示的是高清图片,质量压缩法可能会导致图片模糊,不适合需要保持高清的场景。另外,由于图片的像素并未减少,因此即使通过质量压缩法减小了文件大小,图片的占用内存依然较大。 总的来说,质量压缩法是一种简单实用的图片压缩方式,适合于一些对图片质量要求不高,但需要减小文件大小的场景。然而在一些对图片质量要求较高的场景,或者对内存占用有限制的场景,可能需要使用其他更加复杂的压缩方案来达到更好的效果。