美文网首页
简单的图片二次采样

简单的图片二次采样

作者: 沈溺_16e5 | 来源:发表于2019-03-21 08:26 被阅读0次

刚开始会出现加载不出控件的情况,获取width和height可能为0,所以放在onWindowFocusChanged方法中

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {

        super.onWindowFocusChanged(hasFocus);

        // ImageView 的实际大小
        int width = img.getWidth();
        int height = img.getHeight();
        Log.e(TAG, "initView: " + "width:" + width + ",height:" + height);

        // 不二次采样bitmap大小
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bb);
        Log.e(TAG, "init: " +"不二次采样bitmap大小: "+bitmap.getAllocationByteCount() );

        // 设置为true,加载图片时不会获取到bitmap对象,但是可以拿到图片的宽高
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeResource(getResources(), R.drawable.bb, options);

        // 获取图像的宽高值
        int outWidth = options.outWidth;
        int outHeight = options.outHeight;
        Log.e(TAG, "init: " + "outWidth: "+outWidth+",outHeight:"+outHeight);

        // 计算宽度比和高度比
        float widthRatio = outWidth * 1.0f / width;
        float heightRatio = outHeight * 1.0f / height;
        Log.e(TAG, "init: " + "widthRatio: "+widthRatio+",heightRatio:"+heightRatio);

        // 计算采样率
        float max = Math.max(widthRatio, heightRatio);
        int inSampleSize = (int) Math.ceil(max);
        Log.e(TAG, "init: " + "inSampleSize: "+inSampleSize);

        // 设置通过采样率更改压缩图片,加载图片显示
        options.inJustDecodeBounds=false;
        options.inSampleSize = inSampleSize;

        // 二次采样bitmap大小
        Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.bb, options);

        // 显示压缩后的图片
        img.setImageBitmap(bitmap1);
    }

相关文章

  • 简单的图片二次采样

    刚开始会出现加载不出控件的情况,获取width和height可能为0,所以放在onWindowFocusChang...

  • Bitmap 二次采样

    Bitmap二次采样 一、二次采样: (一)、意义或目的: 1、用BitmapFactory解码一张图片时,有时会...

  • Android Bitmap二次采样

    Bitmap二次采样 一、二次采样: (一)、意义或目的: 1、用BitmapFactory解码一张图片时,有时会...

  • Android回顾--(二十六) Bitmap二次采样

    Bitmap的二次采样 一、二次采样 (一)、意义和目的 用BitmapFactory解码有一张图片时,有时会遇到...

  • 图片压缩,二次采样

    图片压缩就是为了避免我们内存溢出,所有要对一系列进行压缩二次采样等 1.什么是OOM?为什么会引起OOM? out...

  • 图片加载优化

    图片加载优化: 1.二次采样,减少图片对内存的占用 2.缓存,提高图片的访问速度 LRU算法(内存缓存算法) 3....

  • Android zxing从图片扫码优化

    对图片进行扫描要先对图片进行采样,将占用内存较大的图片采样获取小的版本防止在加载图片时发生OOM。如果只是采样有的...

  • Android图片压缩(二次采样)

    一、简介: 在开发过程中,我们或多或少的都会接触到Bitmap这个东西,用的不好的话就会出现OOM问题,同时,也会...

  • 图片二次采样和压缩

    图片的存在形式 1.文件形式(即以二进制形式存在于硬盘上) 2.流的形式(即以二进制形式存在于内存中) 3.Bit...

  • BitmapFactory类 、图片二次采样

    1.BitmapFactory类BitmapFactory是一个创建Bitmap的工具类,为我们提供了从文件、流、...

网友评论

      本文标题:简单的图片二次采样

      本文链接:https://www.haomeiwen.com/subject/zvuwmqtx.html