对图片进行压缩

原创 2015年11月17日 20:37:09

对图片进行二次采样的时候计算压缩之后的尺寸

/**
     * 官方计算代码
     * 根据用户所给出的宽度和高度计算出来压缩比例
     * @param options
     * @param reqWidth
     * @param reqHeight
     * @return
     */

    public static int calculateInSampleSize(
         BitmapFactory.Options options, int reqWidth, int reqHeight) {
        // Raw height and width of image
        final int height = options.outHeight;
        final int width = options.outWidth;
        int inSampleSize = 1;

        //当请求的宽度高度大域名的时候进行缩放
        if (reqWidth > 0 && reqHeight > 0) {
            if (height > reqHeight || width > reqWidth) {

                final int halfHeight = height / 2;
                final int halfWidth = width / 2;

                // Calculate the largest inSampleSize value that is a power of 2 and keeps both
                // height and width larger than the requested height and width.
                while ((halfHeight / inSampleSize) > reqHeight
                        && (halfWidth / inSampleSize) > reqWidth) {
                    inSampleSize *= 2;
                }
            }
        }

        return inSampleSize;
    }



生成图片:
                      //按照原始的图片的尺寸 进行Bitmap的生成
                    //bitmap生成的时候是按照图片的原始的宽高进行生成,并且每一个像素占用四个字节也就是ARGB
                    //ret = BitmapFactory.decodeByteArray(data,0,data.length);
                    //采用二次采样也就是缩小图片尺寸的方法
                    //步骤1:获取原始图片的宽、高的信息只用于采样的计算
                    //1.1: 创建Options给BitMapFactiry内部解码器传递参数
                    BitmapFactory.Options options = new BitmapFactory.Options();
                    //1.2设置inJuetDecodeBounds 来控制解码器。只进行图片高度和宽度的获取不会加载Bitmap
                    //不占用内存,当时用这个参数,代表BitmapFactory.decodeXxx类似的方法,不会返回Bitmap
                    options.inJustDecodeBounds = true;
                    //解码的时候使用Options参数设置解码的方式
                    BitmapFactory.decodeByteArray(data, 0, data.length, options);
                    //--------------------------------------------------------------------------------
                    //2:根据图片的真实的尺寸,和当前需要显示的尺寸,进行计算,生成图片的采样率。
                    //2.2 准备显示在手机上的尺寸
                    //尺寸是根据程序需要设置的。
                    int size = calculateInSampleSize(options, requestWidth, requestHeight);
                    //2.3 计算和设置采样率
                    options.inSampleSize = size;//宽度的1/32 高度的1/32
                    //2.4开放 解码,实际生成Bitmap
                    options.inJustDecodeBounds = false;
                    //2.4.1
                    //要求对每一个采样的像素使用RGB_565存储方式
                    //一个像素占用两个字节比 ARGB_8888小了一半
                    //如果解码器不能使用指定的配置那么自动使用 ARGB_8888
                    options.inPreferredConfig = Bitmap.Config.RGB_565;

                    //2.5使用设置的采样参数进行解码
                    ret = BitmapFactory.decodeByteArray(data, 0, data.length, options);

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android对图片进行压缩

Android设备的内存有限,对于大图片,必须进行压缩后再进行显示,否则会出闲内存溢出:OOM; 处理大图片: 1.使用缩略图(Thumbnails); Android系统会给检测到的图片创建缩略图;...
  • wurensen
  • wurensen
  • 2013年09月17日 21:41
  • 8968

图片用Base64 和 字符串相互转换 内存压缩 尺寸压缩 等比例压缩

图片下载   也可以 用  AsyncTask   见本人其他博客  private Bitmap getBitmap(String uri) {        InputStream i...
  • ToAndroidFast
  • ToAndroidFast
  • 2016年06月16日 09:08
  • 3925

js实现对上传图片进行压缩并且预览

js实现对上传图片的路径转成base64编码,并且对图片进行压缩,实现预览功能 需要先引入jquery:  1、html如下 2、...
  • tangxiujiang
  • tangxiujiang
  • 2017年12月08日 21:30
  • 435

【web】js图片压缩并上传——图片压缩-demo01

引用其他大神的项目进行分析 http://www.cnblogs.com/axes/p/4603984.html 项目成品图: 运行的状态: 点击上传图片,并随机选择一张图片: ...
  • michael_ouyang
  • michael_ouyang
  • 2016年10月10日 11:59
  • 2942

机器学习笔记(二)矩阵和线性代数 例:用Python实现SVD分解进行图片压缩

机器学习中涉及的一些线性代数和矩阵分析的内容,并通过一个例子来表明线性代数的应用,利用Python实现SVD分解来进行图片压缩。...
  • sinat_22594309
  • sinat_22594309
  • 2017年01月17日 13:45
  • 2023

Android 图片选取压缩上传功能需要注意的

## 概述 在个人中心得图片选择上传功能的时候,一般为了节省流量和保证上传的成功率,都会选择压缩上传.其中涉及到了如下一些注意事项. ## 一. 图片压缩 android 系统的图片压缩大体上有...
  • wbwjx
  • wbwjx
  • 2016年04月07日 07:56
  • 859

Android 对本地图片进行压缩处理

对图片进行整体压缩,不改变宽高比,只影响清晰度//本地照片的读取路径 private static String photoPath = "/sdcard/AnBo/"; private static...
  • qq_15267341
  • qq_15267341
  • 2016年09月20日 11:36
  • 1273

php上传图片后 实现压缩图片功能

所用的版本是php7 框架是yii2 程序代码仅供参考,如有错误,大家一起改正     public function actionUpload()     {         $path = '/u...
  • lijunling2008live
  • lijunling2008live
  • 2016年08月08日 11:22
  • 2403

移动端实现图片压缩上传

图片压缩上传
  • xzmn_123
  • xzmn_123
  • 2016年07月09日 17:22
  • 866

Android对图片进行压缩

Android设备的内存有限,对于大图片,必须进行压缩后再进行显示,否则会出现内存溢出:OOM; 处理大图片: 1.使用缩略图(Thumbnails); Android系统会给检测到...
  • u010069940
  • u010069940
  • 2016年05月24日 13:57
  • 1520
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对图片进行压缩
举报原因:
原因补充:

(最多只允许输入30个字)