首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    android之BitmapFactory.Options的使用

    ,BitmapFactory.Options的使用是在加载图片时,就从图片的加载和使用说起 怎样获取图片的大小? 新问题又来了,在通过BitmapFactory.decodeFile(String path)方法将突破转成Bitmap时,遇到大一些的图片,我们经常会遇到OOM(Out Of Memory)的问题。 这就用到了我们上面提到的BitmapFactory.Options这个类。 BitmapFactory.Options这个类,有一个字段叫做 inJustDecodeBounds 。 示例代码如下: BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true 要想节约内存,还需要用到BitmapFactory.Options这个类里的 inSampleSize 这个成员变量。 我们可以根据图片实际的宽高和我们期望的宽高来计算得到这个值。

    82620编辑于 2022-07-20
  • 来自专栏小工匠聊架构

    Imageloader<8>-压缩图片

    通过采样率压缩图片的步骤: 将BitmapFactory.Options的inJustDecodeBounds参数设置为true并加载图片 从BitmapFactory.Options中取出图片的原始宽和高 ,分别对应outWidth和outHeight 根据采样率的就着并结合目标View的所需大小计算出采样率inSampleSize 将BitmapFactory.Options的inJustDecodeBounds 参数设置为false,然后重新加载图片 ---- BTW: 说一下BitmapFactory.Options的inJustDecodeBounds属性,当参数设置为true时,BitmapFactory int reqWidth, int reqHeight) { // 第一次解析将inJustDecodeBounds设置为true,不将图片加载到内存,获取图片的大小 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile

    45720发布于 2021-08-16
  • 来自专栏Android开发

    Bitmap高效加载

    2.Bitmap加载方式 BitmapFactory.decodeFile(); 文件路径 BitmapFactory.decodeByteArray(); 字节数组 BitmapFactory.decodeStream (); 流 BitmapFactory.decodeResource(); 资源ID 3.为什么要高效的加载Bitmap 防止内存溢出,节省内存,提高应用流畅度 中心:BitmapFactory.Options

    14500编辑于 2025-06-10
  • 来自专栏风吹杨柳

    Android Bitmap 内存溢出的问题

    (Native Method) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.decodeStream (BitmapFactory.java:616) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.decodeResourceStream opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = 因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source,decodeStream最大的秘密在于其直接调用JNI>>  = 10;      Bitmap btp =BitmapFactory.decodeStream(is,null,options);     2)  Java代码   ?

    1.5K30发布于 2019-07-05
  • 来自专栏Zachary46

    Android Bitmap优化(采样压缩)

    Bitmap 的采样压缩(这个采样率是根据需求来进行生成的),使用到了inBitmap内存复用和 inJustDecodeBounds 采样的流程: 将 BitmapFactory.Options 的 从 BitmapFactory.Options 中取出图片的原始宽和高,它们对应于 outWidth 和 outHeight 参数。 将 BitmapFactory.Options 的 inJustDecodeBounds 参数设为 false ,然后重新加装图片。 isBm = new ByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中 BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.RGB_565;//建议使用

    1.8K20编辑于 2021-12-08
  • 来自专栏全栈程序员必看

    Android Camera[通俗易懂]

    && resultCode == RESULT_OK){ int width = image.getWidth(); int height = image.getHeight(); BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; BitmapFactory.decodeFile(fileUri.getPath && resultCode == RESULT_OK){ int width = image.getWidth(); int height = image.getHeight(); BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; Uri uri = data.getData(); try { InputStream in = getContentResolver().openInputStream(uri); BitmapFactory.decodeStream

    94820编辑于 2022-07-10
  • 来自专栏陶士涵的菜地

    [android] 加载大图片到内存

    程序分配的堆内存大小是16,虚拟机上面的VM Heep就是设置它的 一个图片所占的内存,比如1920*2560像素的图片需要,1920*2560*3至少这些的内存byte 找到ImageView控件对象 调用BitmapFactory 此时会报内存溢出的错误 我们需要对图片进行缩放 手机的分辨率比如:320*480 图片的分辨率比如:2000*4000 分别计算比例,2000/320 4000/480,按照大的那个比例进行缩放 调用重载方法BitmapFactory 对象的decodeFile(pathName,opts),参数:路径,Options对象 获取BitmapFactory.Option对象,通过new Options()方法 设置Options对象的属性 计算完比例之后 设置Options对象的属性inJustDecodeBounds为false,真解析图片 设置Options对象的采样率属性inSampleSize为上面计算的大的比例 调用重载方法BitmapFactory ; import android.graphics.BitmapFactory.Options; import android.media.ExifInterface; import android.os.Bundle

    1.3K20发布于 2019-09-10
  • 来自专栏android技术

    Android画布Canvas裁剪效果演示--RevealView

    (getResources(), R.drawable.avft)); bitmaps1.add(BitmapFactory.decodeResource(getResources(), (getResources(), R.drawable.box_stack)); bitmaps2.add(BitmapFactory.decodeResource(getResources (getResources(), R.drawable.bubble_frame)); bitmaps3.add(BitmapFactory.decodeResource(getResources (getResources(), R.drawable.bubbles)); bitmaps4.add(BitmapFactory.decodeResource(getResources (getResources(), R.drawable.bullseye)); bitmaps5.add(BitmapFactory.decodeResource(getResources

    1.5K20发布于 2020-07-03
  • 来自专栏向治洪

    android读取sd卡图片并进行缩放操作

    第一种是BitmapFactoryBitmapFactory.Options。 首先,BitmapFactory.Options有几个Fields很有用: inJustDecodeBounds:If set to true, the decoder will return null 最后用BitmapFactory.decodeFile(path, options)生成。 由于只是对bitmap加载到内存一次,所以效率比较高。解析速度快。 是上面我们用到的BitmapFactory.Options和Matrix等经过人家一阵加工而成。 效率好像比第二种方法高一点点。 下面是我的例子: <?  fullOptions = new BitmapFactory.Options();           BitmapFactory.Options exifOptions = new BitmapFactory.Options

    1.9K90发布于 2018-01-29
  • 来自专栏向治洪

    android 减少图片出现oom错误

    1.使用底层的方法来替代使用java层的方法 尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图。    2.用BitmapFactory解码一张图片时,有时会遇到该错误。这往往是由于图片过大造成的。要想正常使用,则需要分配更少的内存空间来存储。 BitmapFactory.Options.inSampleSize.设置恰当的inSampleSize可以使BitmapFactory分配更少的空间以消除该错误。 例如: BitmapFactory.Options opts = new BitmapFactory.Options();    opts.inSampleSize = 4;   Bitmap bitmap  = BitmapFactory.decodeFile(imageFile, opts);    设置恰当的inSampleSize是解决该问题的关键之一。

    1.4K60发布于 2018-01-30
  • 来自专栏双十二技术哥

    Android性能优化(五)之细说Bitmap

    4.1 BitmapFactory.decodeResource() BitmapFactory.java public static Bitmap decodeResourceStream BitmapFactory.Options options = new BitmapFactory.Options(); Bitmap bitmap = BitmapFactory.decodeResource BitmapFactory.Options options_setParams = new BitmapFactory.Options(); options_setParams.inDensity 4.2 BitmapFactory.decodeFile() 与BitmapFactory.decodeResource()的调用链基本一致,但是少了默认设置density和inTargetDensity 6.2 BitmapFactory.Options.inSampleSize 内存压缩: 解码图片时,设置BitmapFactory.Options类的inJustDecodeBounds属性为true

    2.9K50发布于 2018-08-21
  • 来自专栏编码前线

    高效地加载Bitmap

    BitmapFactory.Options的属性 inSampleSize inSampleSize:即采样率,通过对其设置,实现图片的宽和高缩放。 高效加载Bitmap流程 将BitmapFactory.Options的 inJustDecodeBounds参数设为 true并加载图片。 从BitmapFactory.Options中取出图片的原始宽高信息,它们对应 outWidth和 outHeight参数。 将BitmapFactory.Options的 inJustDecodeBounds参数设为 false,然后重新加载图片。 options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource

    62220发布于 2018-11-08
  • 来自专栏Android知识点总结

    1-MI-Android多媒体之Bitmap

    零、前言 [1].Bitmap是关于图象的类,也就是位图 [2].生成Bitmap对象的方式 [3].BitmapFactory.Options [4].模糊处理 [5].给一个Bitmap添加倒影 true时图片不显示 可以获取信息 BitmapFactory.Options o = new BitmapFactory.Options();//获取对象 o.inJustDecodeBounds o = new BitmapFactory.Options();//实例化一个对象 o.inJustDecodeBounds = true; //通过文件绝对路径加载图片 String pathName = "/sdcard/DCIM/Camera/iv_500x400.bmp"; Bitmap bitmap = BitmapFactory.decodeFile(pathName, o); int scale o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; //对这张图片设置一个缩放值 bitmap = BitmapFactory.decodeFile

    77710发布于 2018-09-29
  • 来自专栏刘望舒

    教你如何更好的加载大图片和长图片

    BitmapFactory这个类就提供了多个解析方法(decodeResource、decodeStream、decodeFile等)用于创建Bitmap。我们可以根据图片的来源来选择解析方法。 BitmapFactory为这些方法都提供了一个可选的参数BitmapFactory.Options,用来辅助我们解析图片。 BitmapFactory.Options有一个属性inJustDecodeBounds,这个属性当为true的时候,表明我们当前只是为了获取当前图片的边界的大小,此时BitmapFactory的解析图片方法的返回值为 这样我们就可以很愉快的拿到图片大小了,代码如下: BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds options = new BitmapFactory.Options(); options.inJustDecodeBounds = false; BitmapFactory.decodeStream

    1.9K30发布于 2018-07-30
  • 来自专栏Linux内核深入分析

    Android 多媒体开发学习之加载大图片

    1: 先要获取该图片的参数情况,Android系统提供了一个BitmapFactory这个类 可以创建一个Bitmap对象,从不同的源可以获取图片资源。 BitmapFactory.decodeResource(res, id) 用如上的代码就能获得一个Bitmap对象。 BitmapFactory.decodeResource方法的第二个参数就能获取到图片的各项参数 BitmapFactory.decodeResource(getResources(), R.drawable.dog 但是却能得到源文件的参数情况*/                 opts.inJustDecodeBounds = true;                                  //BitMapFactory 这个类是创建一个bitmap对象,是通过不同的源                 BitmapFactory.decodeResource(getResources(), R.drawable.dog,

    70530编辑于 2022-05-08
  • 来自专栏潇涧技术专栏

    Art of Android Development Reading Notes 12

    BitmapFactory类提供了四类方法:decodeFile、decodeResource、decodeStream和decodeByteArray从不同来源加载出一个Bitmap对象,最终的实现是在底层实现的 采用BitmapFactory.Options按照一定的采样率来加载所需尺寸的图片,因为imageview所需的图片大小往往小于图片的原始尺寸。 (2)BitmapFactory.Options的inSampleSize参数,即采样率 官方文档指出采样率的取值应该是2的指数,例如采样率=k,那么采样后的图片宽高均为原图片大小的 1/k。 options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource 需要注意的是,这个时候BitmapFactory获取的图片宽高信息和图片的位置以及程序运行的设备有关,这都会导致BitmapFactory获取到不同的结果。

    53050发布于 2018-08-01
  • 来自专栏程序员互动联盟

    Android Bitmap那些事之如何优化内存

    1、BitmapFactory使用: 说到图片的加载就必须说BitmapFactory,看名字就知道他的作用了,就是一个生产Bitmap的工厂,下图是它的一些工厂方法: ? 从上图可以看到BitmapFactory可以使用存储Bitmap数据的数组,Bitmap的资源ID,Bitmap文件等做为数据源来创建Bitmap对象,具体情况看你程序中提供的数据源是哪一种。 这些方法中对每一种数据源都提供了两个方法,这里需要注意一下BitmapFacotry.Options参数,它是BitmapFactory的内部类,有一些成员变量含义需要记一下,下面就来说说。 创建Bitmap,很多情况下都会使用下面的代码: BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds public static int calculateInSampleSize( BitmapFactory.Options options,int reqWidth,int reqHeight

    86190发布于 2018-03-12
  • 来自专栏于晓飞的专栏

    ImageLoader 相关知识点

    BitmapFactory 我们不能够通过构造函数创建Bitmap对象。如果需要将图片转成Bitmap对象加载到内存中,就需要使用BitmapFactory类。 BitmapFactory跟据图片数据源的不同,提供了几类获取Bitmap的方法。 其中一个都有一个BitmapFactory.Options参数。这个参数对解码进行了配置。 使用方法: 计算图片的尺寸 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource

    71510发布于 2018-09-11
  • 来自专栏Android开发

    Android动画之帧动画

    2.为帧动画添加内容(在小人书里添加内容) animationDrawable.addFrame(new BitmapDrawable(getResources(), BitmapFactory.decodeResource R.drawable.anim1)), 100); animationDrawable.addFrame(new BitmapDrawable(getResources(), BitmapFactory.decodeResource R.drawable.anim2)), 100); animationDrawable.addFrame(new BitmapDrawable(getResources(), BitmapFactory.decodeResource R.drawable.anim3)), 100); animationDrawable.addFrame(new BitmapDrawable(getResources(), BitmapFactory.decodeResource R.drawable.anim4)), 100); animationDrawable.addFrame(new BitmapDrawable(getResources(), BitmapFactory.decodeResource

    36600编辑于 2025-06-12
  • 来自专栏TigerChain

    01、人人都会设计模式--简单工厂模式

    在 Android 中我们经常使用 Bitmap ,其实和 Bitmap 相关的 BitmapFactory 就是一个简单工厂模式 我们来看看 BitmapFactory 的方法 [BitmapFactory_method.png ] 可以看到 BitmapFactory 分为两类,一类是普通原静态方法「红色框中」,第二类是 JNI 调用的方法「黄色框内」 其实从字面意思我们也可以看到 BitmapFactory 就是 Bitmap BitmapFactory ,为什么说 BitmapFactory 是一个简单工厂模式 BitmapFactory UML 分析 通过前面的学习,我们知道简单工厂模式要有一个产品「抽象类」,具体产品「 实现类」,还要有一个工厂,我们拿这三样对比 BitmapFactory 就可以了 ,我们看到是这样的 [BitmapFactory 的简易 UML] 纳尼? BitmapFactory 生成 Bitmap 流程 大概看一个 BitmapFactory 生成 Bitmap 的一个流程吧,这里以 decodeFile(String filePath) 为例来说明

    69830发布于 2019-06-28
领券