• android 高效加载大图


    在写代码的时候就已经解释:

        /**
         * 计算samplesize的大小
         * @param options 传一个BitmapFactory.Options 进去获取图片的大小和类型
         * @param viewWidth imageview的大小  宽
         * @param viewHight imageview的大小  长
         * @return 返回samplesize
         */
        private static int caculateSampleSize(BitmapFactory.Options options, int viewWidth, int viewHight){
            final int imageWidth = options.outWidth;
            final int imageHight = options.outHeight;
            int sampleSize = 1;
            if (imageWidth > viewWidth || imageHight > viewHight){
                final int halfImageWidth = imageWidth/2;
                final int halfImageHight = imageHight/2;
                while (halfImageHight/sampleSize>viewHight || halfImageWidth/sampleSize>viewWidth){
                    sampleSize *= 2;
                }
            }
            return  sampleSize;
        }
        /**
         *通过资源图片设置好缩略图片
         * @param res 资源图片
         * @param resId 图片id
         * @param viewWidth imageview控件宽
         * @param viewHight imageview控件长
         * @return 返回一个位图
         */
        private static Bitmap decodeSampleBitmapFromResources(Resources res,int resId,int viewWidth,int viewHight){
            final BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            BitmapFactory.decodeResource(res, resId, options);
            //设置缩小的尺寸
            options.inSampleSize = caculateSampleSize(options,viewWidth,viewHight);
            options.inJustDecodeBounds = false;
            return BitmapFactory.decodeResource(res, resId, options);
        }

    然后调用就行了。

    imageView.setImageBitmap(decodeSampleBitmapFromResources(getResources(),R.mipmap.image_111,imageView.getMaxWidth(),imageView.getMaxHeight()));

    最后给出一个  得到图片资源的大小和类型的方法:

        /**
         * 获得 图片 resId 的尺寸大小和类型
         * @param resId  图片资源的ID
         */
        private void setOpitions(int resId){
            BitmapFactory.Options options = new BitmapFactory.Options();
            //设置 inJustDecodeBounds 属性为true可以在解码的时候避免内存的分配,它会返回一个null的Bitmap,但是可以获取到 outWidth, outHeight 与 outMimeType。
            options.inJustDecodeBounds = true;
            //BitmapFactory.decodeResource(res,int res id,options);获得图片资源的一系列信息
            BitmapFactory.decodeResource(getResources(),resId,options);
            //图片资源的长宽和图片类型
            int imageWidth = options.outWidth;
            int imageHight = options.outHeight;
            String imageType = options.outMimeType;
        }

    over!

  • 相关阅读:
    tensor张量
    Image Stride(内存图像行跨度)
    Batch Normalization
    论文阅读
    codeforces 520B
    codeforces 467B
    C语言位运算
    codeforces 474D
    codeforces 545c
    codeforces 698A
  • 原文地址:https://www.cnblogs.com/android-host/p/5316050.html
Copyright © 2020-2023  润新知