返回
11月更文挑战|Android基础-Bitmap图片压缩策略大全
Android
2023-09-29 22:32:00
11 月,我正在参与更文挑战。这是我连续挑战的第六天。想要了解活动的更多信息,请查看:2021 最后一次更文挑战 前言。
正文
了解了 Bitmap 图片加载之后,就不得不提到图片压缩了。图片压缩在应用中必不可少,有效压缩图片降低应用内存占用事半功倍。
Bitmap 图片压缩策略
Bitmap 图片压缩的策略有很多,常用的有以下几种:
- 采样率压缩 :通过降低图片的分辨率来压缩图片。
- 质量压缩 :通过降低图片的质量来压缩图片。
- 无损压缩 :通过使用无损压缩算法来压缩图片。
采样率压缩
采样率压缩是通过降低图片的分辨率来压缩图片。采样率压缩的算法很简单,就是将图片中的每个像素点按照一定的比例进行抽样,只保留其中的一部分。这样就可以在降低图片分辨率的同时,也降低了图片的体积。
采样率压缩的优点是压缩率高,缺点是会降低图片的质量。
质量压缩
质量压缩是通过降低图片的质量来压缩图片。质量压缩的算法是将图片中的每个像素点的颜色值进行量化,只保留其中的一部分。这样就可以在降低图片质量的同时,也降低了图片的体积。
质量压缩的优点是压缩率高,缺点是会降低图片的质量。
无损压缩
无损压缩是通过使用无损压缩算法来压缩图片。无损压缩的算法是将图片中的每个像素点的颜色值进行编码,然后将编码后的数据进行压缩。这样就可以在不降低图片质量的情况下,也降低了图片的体积。
无损压缩的优点是不会降低图片的质量,缺点是压缩率较低。
Bitmap 图片压缩示例代码
// 采样率压缩
Bitmap bitmap = BitmapFactory.decodeFile(path);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
// 质量压缩
Bitmap bitmap = BitmapFactory.decodeFile(path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos);
byte[] bytes = baos.toByteArray();
// 无损压缩
Bitmap bitmap = BitmapFactory.decodeFile(path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] bytes = baos.toByteArray();
总结
Bitmap 图片压缩在应用中非常重要。通过合理使用 Bitmap 图片压缩策略,可以有效降低应用内存占用,提高应用性能。