压缩图片大小,尺寸不变

  • 将已知路径的图片压缩至不大于目标大小,并保存至指定路径

      /**
    * 质量压缩,通过给定的路径来压缩图片并保存到指定路径
    *
    * @param srcPath
    * 资源图片的路径
    * @param savePath
    * 图片的保存路径
    * @param aimSize
    * 压缩到图片大小的最大值
    */
    public static void compressImageByPath(String srcPath, String savePath,
    int aimSize) {
    // 注意savePath的文件夹和文件的判断
    Bitmap imgBitmap = BitmapFactory.decodeFile(srcPath);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    int percent = 100;// 定义压缩比例,初始为不压缩
    imgBitmap.compress(Bitmap.CompressFormat.JPEG, percent, baos);
    int currentSize = baos.toByteArray().length / 1024;
    while (currentSize > aimSize) {// 循环判断压缩后图片是否大于目的大小,若大于则继续压缩
    baos.reset();// 重置baos,即清空baos
    //注意:此处该方法的第一个参数必须为JPEG,若为PNG则无法压缩。
    imgBitmap.compress(Bitmap.CompressFormat.JPEG, percent, baos);
    currentSize = baos.toByteArray().length / 1024;
    percent -= 5;
    if (percent <= 0) {
    break;
    }
    } try {//将数据写入输出流
    FileOutputStream fos = new FileOutputStream(savePath);
    baos.writeTo(fos);
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {//清空缓存,关闭流
    baos.flush();
    baos.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    if (!imgBitmap.isRecycled()) {
    imgBitmap.recycle();//回收图片所占的内存
    System.gc();//提醒系统及时回收
    }
    }

Android --------- 压缩图片的尺寸和大小的更多相关文章

  1. Android压缩图片到100K以下并保持不失真的高效方法

    前言:目前一般手机的相机都能达到800万像素,像我的Galaxy Nexus才500万像素,拍摄的照片也有1.5M左右.这么大的照片上传到服务器,不仅浪费流量,同时还浪费时间. 在开发Android企 ...

  2. android 压缩图片大小,防止OOM

    android开发中,图片的处理是非常普遍的,经常是需要将用户选择的图片上传到服务器,但是现在手机的分辨率越来越好了,随便一张照片都是2M或以上,如果直接显示到ImageView中,是会出现OOM的, ...

  3. android -------- 压缩图片文件工具类

    项目中常常遇到文件压缩问题,上传文件大小限制 今天简单的分享一点干货,文件压缩,图片压缩,压缩Bitmap 主要通过尺寸压缩和质量压缩,以达到清晰度最优 效果图 源码地址: https://githu ...

  4. [Android] 压缩图片并保存

    不难,但用的时候有时候突然会想不起来..记录一下吧 原文地址请保留http://www.cnblogs.com/rossoneri/p/3995096.html 先加权限 <uses-permi ...

  5. Xamarin.Android 压缩图片并上传到WebServices

    随着手机的拍照像素越来越高,导致图片赞的容量越来越大,如果上传多张图片不进行压缩.质量处理很容易出现OOM内存泄漏问题. 最近做了一个项目,向webservices上传多张照片,但是项目部署出来就会出 ...

  6. android设置图片自适应控件大小

    在XML文件的ImageView属性中加上:android:scaleType="fitXY"

  7. Android LruCache 压缩图片 有效避免程序OOM

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9316683 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工, ...

  8. 等比例压缩图片到指定的KB大小

    基本原理: 取原来的图片,长宽乘以比例,重新生成一张图片,获取这张图片的大小,如果还是超过预期大小,继续在此基础上乘以压缩比例,生成图片,直到达到预期 /** * @获取远程图片的体积大小 单位byt ...

  9. Android大图片导致内存问题小结

    在网上看了部分Android中OOM的问题,现在根据理解,做一下笔记. Android OOM 产生的几种原因 1. 程序中使用了太多自己创建的Bitmap. 这种情况通常是最好解决的. 因为你明白你 ...

随机推荐

  1. PyQt5+python3的FindDialog

    import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import Qt, pyqtSignal class FindDialog(QD ...

  2. image转文件

    UIImage  *image = self.imageCompainPhoto.image; NSData *imageData = UIImagePNGRepresentation(image); ...

  3. Android应用----如何让应用全屏

    一般Android的应用启动时都有欢迎界面,类似QQHD启动那样.比较大方绚丽.心动不如行动,有时间自己也来实现类似的效果,嘿嘿.    观察发现QQHD的欢迎界面是全屏的,这个好办.下面就Andro ...

  4. shape及其子节点详解

    shape最大的最用便是用来替代图片,释放磁盘空间.另外则是增加适应不通过屏幕的设备. 先来看看shape下面的节点以及它所起到的作用. gradient   -- 对应颜色渐变(startcolor ...

  5. win7禁止自动使用浏览器打开FTP而是用资源管理器

    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\ftp] @="URL:File Transfer Protocol" ...

  6. CP1W-CIF41以太网模块(使用总结)

    1>插入CP1W-CIF41后,ERR灯一直闪烁? 解决方法:CIF41以太网模块在第一个扩展板槽位,需要把CP1H的4号拨码开关拨到ON的位置.同样,如果在第二个槽位,需要5号拨码拨到ON位置 ...

  7. Android 中HttpURLConnection与HttpClient的简单使用

    1:HttpHelper.java public class HttpHelper { //1:标准的Java接口 public static String getStringFromNet1(Str ...

  8. POJ_1321——棋盘问题,回溯+剪枝

    Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...

  9. 算法导论(第三版)Problems2(归并插入排序、数列逆序计算)

    讨论内容不说明,仅提供相应的程序. 2.1:归并插入排序θ(nlgn) void mergeInsertionSort(int a[], int l, int r, int k) { int m; & ...

  10. GF(2^8)生成元

    目的是找出所有GF(2^8)的生成元. 方法很简单,从2开始遍历,将每个元素都与自身相乘255次,看是否能得到1~255.若能,则是生成元. #include<iostream> #inc ...