说说在 Android 中如何压缩图片
发布日期:2021-06-29 21:11:16 浏览次数:2 分类:技术文章

本文共 1336 字,大约阅读时间需要 4 分钟。

目前存在两种压缩图片方式:

* 质量压缩 - 不改变图片尺寸。
* 按比例压缩 - 相当于是在像素上进行压缩。

而图片有三种存在形式:

* file - 磁盘。
* stream - 网络传输、内存。
* bitmap - 内存。

bigmap 在内存中的大小是按像素计算的,也就是width * height,所以如果需要在 Android 中显示照片,那么就必须进行按比例压缩,避免因为内存消耗过大,导致 APP 退出。

/**     * 按比例压缩     *     * @param path   图片路径     * @param width  宽度(像素)     * @param height 高度(像素)     * @return     */    public Bitmap ratioCompress(String path, float width, float height) {        BitmapFactory.Options options = new BitmapFactory.Options();        options.inPreferredConfig = Bitmap.Config.RGB_565;//一个像素存储两个字节,默认为一个像素存储四个字节        options.inJustDecodeBounds = true;//允许接下来直接得到 Bitmap 对象而不会消耗内存        Bitmap bitmap = BitmapFactory.decodeFile(path, options);//只是空的 Bitmap 对象        int outWidth = options.outWidth;        int outHeight = options.outHeight;        /**         * 计算缩放比         */        int ratio = 1;//缩放比,1 表示不缩放        if (outWidth > outHeight && outWidth > width) {
//按照宽度进行缩放 ratio = (int) (outWidth / width); } else if (outWidth < outHeight && outHeight > height) {
//按照高度进行缩放 ratio = (int) (outHeight / height); } if (ratio <= 0) { ratio = 1; } options.inSampleSize = ratio;//设置缩放比 options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(path, options);//压缩 }

是不是很简单呀 O(∩_∩)O哈哈~

转载地址:https://deniro.blog.csdn.net/article/details/80464322 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:说说在 Spring 中如何国际化信息
下一篇:说说 Android 中如何使用摄像头和相册

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月24日 11时15分35秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章