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

    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 这个成员变量。 我们可以根据图片实际的宽高和我们期望的宽高来计算得到这个值。

    89120编辑于 2022-07-20
  • 来自专栏Android开发

    Bitmap高效加载

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

    19300编辑于 2025-06-10
  • 来自专栏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
  • 来自专栏小工匠聊架构

    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

    53520发布于 2021-08-16
  • 来自专栏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 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

    1K20编辑于 2022-07-10
  • 来自专栏向治洪

    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

    2K90发布于 2018-01-29
  • 来自专栏风吹杨柳

    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.6K30发布于 2019-07-05
  • 来自专栏陶士涵的菜地

    [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.4K20发布于 2019-09-10
  • 来自专栏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

    87210发布于 2018-09-29
  • 来自专栏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) 为例来说明

    77430发布于 2019-06-28
  • 来自专栏双十二技术哥

    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

    3K50发布于 2018-08-21
  • 来自专栏Phoenix的Android之旅

    Android基础-Bitmap加载

    获取Bitmap大小 获取Bitmap大小的过程不需要加载整张图片,可以用 BitmapFactory.Options 来获取 BitmapFactory.Options options = new BitmapFactory.Options (); options.inJustDecodeBounds = true; BitmapFactory.decode*** int imageHeight = options.outHeight; int 10倍, 缩放的过程可以用 inSampleSize 这个参数来控制, public Bitmap getResizedBitmap(File bitmap, int sampleSize) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = false; options.inSampleSize = sampleSize; return BitmapFactory.decodeFile(bitmap, options); } 在真正加载图片的时候 inJustDecodeBounds这个参数需要设置为

    90610发布于 2018-08-07
  • 来自专栏量子位

    重新定义程序员职业,Facebook推出代码推荐工具Aroma

    比如,一个安卓程序员想要了解其他人如何解码手机中的bitmap,他可以使用下面的这些代码直接进行搜索: Bitmap bitmap = BitmapFactory.decodeStream(input) ; 然后,Aroma会给出一些代码推荐: final BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize 第一段代码: InputStream is = ...; final BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize (bmp); // some more code 第二段代码: BitmapFactory.Options options = new BitmapFactory.Options(); while ( 结果如下所示: InputStream is = ...; final BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize

    59140发布于 2019-04-22
  • 来自专栏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,

    78330编辑于 2022-05-08
  • 来自专栏向治洪

    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.6K60发布于 2018-01-30
  • 来自专栏BennuCTech

    详解Bitmap之ARGB_8888/RGB_565/ALPHA_8/ARGB_4444

    options1 = new BitmapFactory.Options(); options1.inPreferredConfig = Bitmap.Config.ARGB_8888; Bitmap bitmap1 = BitmapFactory.decodeByteArray(data, 0 , data.length, options1); //System.out.println options2 = new BitmapFactory.Options(); options2.inPreferredConfig = Bitmap.Config.RGB_565; options3 = new BitmapFactory.Options(); options3.inPreferredConfig = Bitmap.Config.ALPHA_8; options4 = new BitmapFactory.Options(); options4.inPreferredConfig = Bitmap.Config.ARGB_4444;

    5.5K30编辑于 2022-02-24
  • 来自专栏刘晓杰

    Bitmap介绍

    BitmapFactory.Options options = new BitmapFactory.Options(); Bitmap bitmap = BitmapFactory.decodeResource BitmapFactory.Options options_setParams = new BitmapFactory.Options(); options_setParams.inDensity options = new BitmapFactory.Options(); // 图片复用,这个属性必须设置; options.inMutable = true; options = new BitmapFactory.Options(); options.inTempStorage = new byte[16 * 1024 * 1024]; https://stackoverflow.com/questions/5523552/bitmapfactory-options-intempstorage-field 这个链接里面有段代码,也就是会默认生成一个

    1.7K20发布于 2020-06-02
  • 来自专栏拭心的安卓进阶之路

    Android之Bitmap

    Bitmap比较特别 因为其不可创建 而只能借助于BitmapFactory 而根据图像来源又可分以下几种情况: * png图片 如:R.drawable.tianjin Java代码  Bitmap bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.tianjin);  加载资源图片 Bitmap bmp = BitmapFactory.decodeResource 从资源中获取位图 可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图。 使用BitmapFactory类decodeStream(InputStream is)解码位图资源,获取位图。      Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic180); BitmapFactory的所有函数都是static,这个辅助类可以通过资源

    1.5K30编辑于 2022-11-30
  • 来自专栏韩曙亮的移动开发专栏

    【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )

    图片尺寸数据解码 : ① 创建解码选项 : 创建 BitmapFactory.Options 对象 ; ② 设置解码尺寸数据 : 设置 BitmapFactory.Options 对象的 inJustDecodeBounds 为 true , 解码图像时 , 不解码图像数据 , 只获取图像的尺寸数据 ; ③ 解码图像尺寸数据 : 调用 BitmapFactory.decodeStream 方法 , 解码图片 , 图片相关的尺寸数据保存到了 代码示例 : /** * Bitmap 解码选项 */ private BitmapFactory.Options mOptions; /** * 图片宽度 */ private int mImageWidth ; /** * 图片高度 */ private int mImageHeight; // ... // 解码选项 mOptions = new BitmapFactory.Options(); // 读取图片的尺寸数据 mOptions.inJustDecodeBounds = true; // 解码图片 , 图片相关的尺寸数据保存到了 mOptions 选项中 BitmapFactory.decodeStream

    2.6K10编辑于 2023-03-27
领券