美文网首页
2018-03-18 图片处理(一)----图片加载

2018-03-18 图片处理(一)----图片加载

作者: 紫杉叶子 | 来源:发表于2018-03-20 09:34 被阅读0次
笔记如下


如图:
2018-03-18_081925.png

实现步骤: 从sd卡中显示图片

1.因为是android6.0系统,所以要动态申请读写sd卡的权限
2.显示图片

  • 为了与屏幕大小更加的契合,要动态的获取对图片的一个采样率

采样率: 比如采样率为4,对于一个1000*1000的图片,宽和高:1000 * 1000 ----> 高:1/4 * 宽:1/4 = 总:1/16 ---- 以1/16的大小来采样

  • 动态获取采样率
            //应该通过手机屏幕来确定采样率的多少
            //屏幕宽高
            DisplayMetrics metrics = getResources().getDisplayMetrics();
            int scteenWidth = metrics.widthPixels;//屏幕宽度
            int scteenHeight = metrics.heightPixels;//屏幕高度
             //图片宽高
            //exif:包含图片信息的头文件
            ExifInterface exif = new ExifInterface(path);
            int picWidth = exif.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 0);//图片的宽度
            int picHeight = exif.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 0);//图片的高度

计算出采样率:

            //图片宽度/屏幕的宽度
            //考虑数值的四舍五入
            int widthSample = (int) (picWidth * 1f / scteenWidth + 0.5f);
            int heightSample = (int) (picHeight * 1f / scteenHeight + 0.5f);
            //拿到采样率
            int sample = (int) (Math.sqrt(widthSample * widthSample + heightSample * heightSample)


完整源码:
    public void loadBitmap(View v){

        String path = "storage/emulated/0/6.jpg";

        //通过手机屏幕的宽高来计算采样率


        //应该通过手机屏幕来确定采样率的多少
        //屏幕宽高
        DisplayMetrics metrics = getResources().getDisplayMetrics();
        int scteenWidth = metrics.widthPixels;//屏幕宽度
        int scteenHeight = metrics.heightPixels;//屏幕高度

        try {
            //图片宽高
            //exif:包含图片信息的头文件
            ExifInterface exif = new ExifInterface(path);
            int picWidth = exif.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 0);//图片的宽度
            int picHeight = exif.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 0);//图片的高度


            //图片宽度/屏幕的宽度
            //考虑数值的四舍五入
            int widthSample = (int) (picWidth * 1f / scteenWidth + 0.5f);
            int heightSample = (int) (picHeight * 1f / scteenHeight + 0.5f);
            //拿到采样率
            int sample = (int) (Math.sqrt(widthSample * widthSample + heightSample * heightSample) + 0.5f);

            //加载图片
            BitmapFactory.Options opts = new BitmapFactory.Options();

            //宽和高:1000 * 1000 ----> 4  高:1/4 * 宽:1/4 = 总:1/16 ---- 以1/16的大小来采样
            opts.inSampleSize = sample ;//采样率

            Bitmap bitmap = BitmapFactory.decodeFile(path,opts);

            iv.setImageBitmap(bitmap);

            
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

相关文章

  • 2018-03-18 图片处理(一)----图片加载

    笔记如下 实现步骤: 从sd卡中显示图片 1.因为是android6.0系统,所以要动态申请读写sd卡的权限2.显...

  • iOS性能优化——图片加载和处理

    iOS性能优化——图片加载和处理 iOS性能优化——图片加载和处理

  • Android 通用流行框架大全

    *** 缓存*** *** 图片加载*** *** 图片处理*** *** 网络请求*** *** 网络解析***...

  • vue-lazyload图片错误替换

    vue图片懒加载,vue-lazyload官方错误图片处理:1、用图片来替换加载过程或者加载失败: 2、引入时设置...

  • css知识点

    1、图片的处理 当一个网页有大量图片要加载时,可以对图片进行压缩,或者采用Js异步处理,让一部分图片先加载,鼠标滑...

  • Metal:加载图片

    前沿 加载图片最重要的就是纹理的设置,其他具体可参看MTLBuffer处理顶点数据 加载纹理 解压图片 解压图片和...

  • Picasso加载失败处理成圆角图片失败

    原因 我们都知道Picasso可以加载图片,然后自己也可以处理成圆角或者圆形,但是可以发现当我加载图片失败时,处理...

  • ios内存优化

    1.图片处理 一般加载图片都用 [UIImage imageNamed:@""]; 这种方式读取图片,会缓存在内存...

  • 图片的填充,无图片时隐藏边框

    用到图片懒加载插件时,这样处理

  • Java图片压缩处理

    网页中某些图片大的时候,图片会加载慢,这时候需要对图片进行压缩处理,Java有对图片进行压缩处理的方法。 整体思路...

网友评论

      本文标题:2018-03-18 图片处理(一)----图片加载

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