神刀安全网

说说在 Android 中如何压缩图片

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

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

而图片有三种存在形式:

  • 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哈哈~

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 说说在 Android 中如何压缩图片

分享到:更多 ()