zoukankan      html  css  js  c++  java
  • Android 开发压缩图片

    private Bitmap imageZoom(int position , Bitmap bitMap) {
            //图片允许最大空间
            double maxSize =2000.00;        
            double bitmapSize = bitMap.getByteCount()/1024;
            Log.d("derrick", "bitmap 0 = "+bitmapSize+" , index = "+position);
            if (bitmapSize < maxSize) {
                return bitMap;
            }
            if (bitmapSize > maxSize) {
                //获取bitmap大小 是允许最大大小的多少倍
                double scale = bitmapSize / maxSize;
                //开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍 (1.保持刻度和高度和原bitmap比率一致,压缩后也达到了最大大小占用空间的大小)
                Bitmap result = zoomImage(bitMap, bitMap.getWidth() / Math.sqrt(scale),bitMap.getHeight() / Math.sqrt(scale));
                Log.i("derrick", "bitmap 1 = "+result.getByteCount()/1024 +" , index = "+position);
                return result;
            }
            return bitMap;
        }
        private Bitmap zoomImage(Bitmap bgimage, double newWidth,double newHeight) {
            // 获取这个图片的宽和高
            float width = bgimage.getWidth();
            float height = bgimage.getHeight();
            // 创建操作图片用的matrix对象
            Matrix matrix = new Matrix();
            // 计算宽高缩放率
            float scaleWidth = ((float) newWidth) / width;
            float scaleHeight = ((float) newHeight) / height;
            // 缩放图片动作
            matrix.postScale(scaleWidth, scaleHeight);
            Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true);
            return bitmap;
        }

  • 相关阅读:
    C#资源释放方法实例分析
    c#中在一个窗体中触发另一个窗体的事件
    C#定时器的用法
    C# 类的析构函数和释放函数
    C# 定时执行,文件占用
    C#多线程与异步
    Newtonsoft中JArray 转成list<object>
    C#中Dictionary的用法
    C# 解析Json文件(使用NewtonJson库)
    mysql无法远程连接10038错误的坑(阿里云ecs)
  • 原文地址:https://www.cnblogs.com/farmerkids/p/5749994.html
Copyright © 2011-2022 走看看