首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bitmap图片压缩,大图加载防止OOM

[在这里插入图片描述] 前言 Android官网中处理位图 和 [高效加载大型位图 ](https://developer.android.com/topic/performance/graphics/...load-bitmap) 这两篇文章中已经做了很明确指出了如何高效的加载大图。...先看一些基础知识(后面有答案) Android官网-提供备用位图 这篇文章链接中的有讲到: 要在像素密度不同的设备上提供良好的图形质量,您应该以相应的分辨率在应用中提供每个位图的多个版本(针对每个密度级别提供一个版本...,不支持 png图片 的压缩。...使用inSampleSize进行压缩 既然图片尺寸已知,便可用于确定应将完整图片加载到内存中,还是应改为加载下采样版本。以下是需要考虑的一些因素: 在内存中加载完整图片的估计内存使用量。

2.8K00

Bitmap图片压缩,大图加载防止OOM

在这里插入图片描述 前言 Android官网中处理位图 和 高效加载大型位图 这两篇文章中已经做了很明确指出了如何高效的加载大图。...先看一些基础知识(后面有答案) Android官网-提供备用位图 这篇文章链接中的有讲到: 要在像素密度不同的设备上提供良好的图形质量,您应该以相应的分辨率在应用中提供每个位图的多个版本(针对每个密度级别提供一个版本...image 例如,如果您有一个可绘制位图资源,它在中密度屏幕上的大小为 48x48 像素,那么它在其他各种密度的屏幕上的大小应该为: 36x36 (0.75x) - 低密度 (ldpi) 48x48(1.0x...,不支持 png图片 的压缩。...使用inSampleSize进行压缩 既然图片尺寸已知,便可用于确定应将完整图片加载到内存中,还是应改为加载下采样版本。以下是需要考虑的一些因素: 在内存中加载完整图片的估计内存使用量。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android-Bitmap

    所以,一张 png 或者 jpg 格式的图片大小,跟这张图片加载进内存所占用的大小完全是两回事。但图片在内存中的大小和Bitmap大小相同 1.2.问题二: 如何计算图片在内存中的大小?...16位图像相比8位图像有较好的色彩过渡,更加细腻,携带的色彩信息可以更加丰富。其他位类同。 如果一个8位图像有10MB大小,它变成16时,大小就要翻一翻变成20MB。其他位类同。...原因在于:上面的计算方式并不准确,我们要考虑不同设备以及同一设备不同条件: 2.1.1同设备或不同设备不同条件又分好多种: 不同drawable文件 磁盘或res中 图片格式由png转为jpg 那我们就从同设备不同...而后者不支持透明度。 3.2减少图片像素点大小 降低分辨率不靠谱那就只好试试减少图片的像素点大小了,也就是图片的尺寸压缩。...我们都知道在Android3.0以前Bitmap是存放在内存中的,我们需要回收native层和Java层的内存,在Android3.0以后Bitmap是存放在堆中的,我们只要回收堆内存即可,官方建议我们

    1.4K20

    【科技】Google推出首个Android P开发者预览版

    这是Android的下一个版本的早期版本,它被称为Android P,直到Google选择以该字母开头的名称。...如果你想要简短版本,以下是首个Android P开发者预览的亮点:内置支持显示图样(读取:凹槽)、调整的快速设置面板,带圆角的通知抽屉,回复内联时的通知消息,通知中的智能回复,用于指纹验证的一致UI,以及限制应用程序在后台执行的隐私增强功能...用于位图和可绘制的ImageDecoder: ImageDecoder(不支持BitmapFactory)允许你从字节缓存、文件或URI中创建位图或绘图。...作业可以声明其估计的数据大小,信号预取以及指定详细的网络需求。运营商可以将网络报告为拥塞或未计量,而JobScheduler则根据网络状态管理工作。...因此,应用程序可以使用RTT API来测量到附近WiFi接入点(AP)的距离。了解到三个或更多的AP的距离,可以计算设备的位置,准确度为1到2米。

    1.3K60

    瀚海微SD NAND存储功能描述(23)速度等级测量条件和要求

    速度等级的测量条件和要求测量条件各速度等级的测量条件如下表所示。Speed Class 10卡应支持高速模式。更高的速度等级可能需要更高的频率或更大的RU尺寸。...注:TFR(4KB)值在版本3.00 Pm中更改,可用于第2类至第6类。当Pm=0时,主机认为Pm为2 ~ 6类Pw的一半。...有两种测量Pw的方法。如果AU大小等于或小于4MB;Pw定义为AU上的最小平均写性能。这与SDSC和SDHC的定义相同。...卡的Pw定义为内存区域中所有au的最小性能。无论其大小如何,AU都是Speed Class主机写入数据的内存区域的大小以RU为单位,从上到下依次排列。...位图从任何512字节的边界地址开始写入,大小从512字节到16kb字节不等。在开始记录之前应该创建一个目录条目,并且应该通过512字节的单块写入(CMD24或CMD25)来写入相同的块。

    9010

    【Android 内存优化】Bitmap 内存占用计算 ( Bitmap 图片内存占用分析 | Bitmap 内存占用计算 | Bitmap 不同像素密度间的转换 )

    中 Bitmap 对象在内存中存储的的像素格式有两种 : ARGB_8888 和 RGB_555 ; ① ARGB_8888 像素格式 : Alpha ( 透明度 ) , Red ( 红 ) , Green...( 绿 ) , Blue ( 蓝 ) , 各占 1 字节 , 每个像素点占 4 字节 , 一张宽度 W , 高度 H 的图片 , 在内存中的大小是 W \times H \times 4..., 在内存中的大小是 W \times H \times 2 字节 ; Android 中 Bitmap 在内存中的大小与图片大小无关 , 只与像素格式和像素点个数有关 ; 内存中的大小只与分辨率有关...Bitmap 占内存大小计算 : Android 中默认使用 ARGB_8888 像素格式 , 每个像素点占 4 字节 , 上图宽 5224 , 高 2678; 5224 \times 2678 \...times 4 = 55,959,488 最终 Bitmap 在内存中的大小是 55,959,488 字节 ; 三、Bitmap 内存占用与像素密度 ---- 1 .

    15.4K20

    借鉴Glide思想二次封装Fresco背景二次封装使用示例Github 地址

    SimpleDrawwView 控件进行占位图等等的配置: <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/sdv_fresco..." android:layout_width="500dp" android:layout_height="500dp" fresco:actualImageScaleType...后,界面上会弹出你可用 api,这些就是我开放给你的入口,我将这个使用过程划分成几个步骤,每个步骤能做什么,该做什么,我都给你规定好了,你参照着提示,直接从方法命名上就能够知道该如何使用了,AndroidStudio...这里就两个入口,一个是用来初始化 Fresco 的: init(Context) 这个内部封装了一些默认的初始化配置,比如内存大小配置,内部日志配置等等。...以上,就是 DFresco 组件的封装思想,欢迎指点一下哈~ 另外,参考了 Glide 的一些处理,当你的 intoTarget 是传入了 SimpleDraweeView 控件时,DFresco 内部会自动根据控件的大小对图片进行一次分辨率压缩

    76220

    用 TensorFlow Lite 在安卓系统上实现即时人体姿态跟踪

    PoseNet是一种视觉模型,通过检测关键身体部位的位置来估计人在图像或视频中的姿势。例如,模型可以估计一个人的肘部和/或膝盖在图像中的位置。...姿势估计模型不识别图像中的人,只识别关键身体部位的位置。 TensorFlowLite正在共享一个Android示例应用程序,该应用程序利用设备的摄像头实时检测和显示个人的关键身体部位。 ?...姿态估计有很多可能性。举几个例子,开发人员可以基于身体图像的增强现实,动画计算机图形字符,并分析运动员在运动中的步态。...应用程序对每个传入的相机图像执行以下步骤: 1、从相机预览中捕获图像数据,并将其从YUV_420_888转换为ARGB_888格式。 2、创建一个位图对象来保存RGB格式帧数据中的像素。...裁剪位图并将其缩放到模型输入大小,以便将其传递给模型。 3、从PoseNet库调用estimateSinglePose()函数来获取Person对象。 4、将位图缩放到屏幕大小。

    3.8K30

    Android训练课程(Android Training) - 高效的显示图片

    高效的加载大尺寸位图 图片有各种形状和大小. 在很多情况下,它们有更大的需要超过一个典型的应用程序的界面。...BitmapFun 示例包含了一些类,展示了如何设计你的程序以在不同的Android版本中更有效率的工作。...Android 2.3添加了并发的垃圾回收,这意味着,失去引用的图像的内存很快被回收。 在 Android 2.3.3 (API 级别 10) 及以下,位图的后备的像素数据被存储在原生内存中。...Android 3.0 (API 级别 11)中,像素数据也被存储在Dalvik 的堆中,和它关联到的位图一起了。 下面的章节描述了 在不同的Android版本中如何优化内存的管理。...在运行在Android 3.0或者更高版本上的一个应用中,一个图片被从 LruCache中移除时,再在一个HashSet 中放置一个位图的软引用,使用inBitmap标记它以尽可能被重用。

    2.9K00

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

    在上一篇《Android性能优化(四)之内存优化实战》中谈到那个内存中的大胖子Bitmap,Bitmap对内存的影响极大。...Bitmap内存模型 Android Bitmap内存的管理随着系统的版本迭代也有演进: 1.在Android 2.2(API8)之前,当GC工作时,应用的线程会暂停工作,同步的GC会影响性能。...Native内存中的像素数据并不会以可预测的方式进行同步回收,有可能会导致内存升高甚至OOM。而在Android3.0之后,Bitmap的像素数据也被放在了Dalvik Heap中。 2....官方提供了一个使用Recycle的实例:使用引用计数来判断Bitmap是否被展示或缓存,判断能否被回收。...而在Android3.0之后,Bitmap的像素数据也被放在了Dalvik Heap中。 2.

    2.6K50

    Android 9.0 强势来袭,带来了哪些新特性?

    为了保持隐私,只有手机能够确定到接入点的距离; 接入点没有此信息。 如果我们的设备测量到3个或更多接入点的距离,我们可以使用多点定位算法来估算最适合这些测量的设备位置。结果通常在1至2米范围内准确。...JobScheduler可以声明其估计的数据大小,信号预取,并指定详细的网络要求。JobScheduler然后根据网络状态管理工作。...硬件安全模块 安装了运行Android 9或更高版本的受支持设备可以使用StrongBox Keymaster,它是驻留在硬件安全模块中的Keymaster HAL的实现。...通过将APK文件的过去签名证书链接到现在签名证书的证书,此功能可以使你的应用程序使用新的签名证书进行签名。 注意:运行Android 8.1(API级别27)或更低版本的设备不支持更改签名证书。...DEX文件的ART提前转换 在运行Android 9或更高版本的设备上,Android运行时(ART)提前编译器通过将应用程序包中的DEX文件转换为更紧凑的表示形式,进一步优化压缩的Dalvik可执行格式

    3.5K20

    浅谈 Android 屏幕适配

    是测量空间点密度的单位,最初应用于打印技术中,它表示每英寸能打印上的墨滴数量。较小的 DPI 会产生不清晰的图片。...图像分辨率一般被用于ps中,用来改变图像的清晰度。 密度无关像素 (dp) 在定义 UI 布局时应使用的虚拟像素单位,用于以密度无关方式表示布局维度或位置。...支持每种密度的 位图可绘制对象的相对大小 适配方案 密度独立性 应用显示在密度不同的屏幕上时,如果它保持用户界面元素的物理尺寸(从 用户的视角),便可实现“密度独立性” 。...Android 系统可帮助您的应用以两种方式实现密度独立性: 系统根据当前屏幕密度扩展 dp 单位数 系统在必要时可根据当前屏幕密度将可绘制对象资源扩展到适当的大小 nodpi:它可用于您不希望缩放以匹配设备密度的位图资源...{ compile'com.android.support:percent:25.1.0' } 使用布局别名 最小宽度限定符仅适用于 Android 3.2 及更高版本。

    1.4K10

    Android-图片压缩(二)-纯干货

    ,这里我将会带着大家做一款压缩工具,功能媲美鲁班压缩,而且还带有鲁班没有的功能,如输出指定格式等,在这个过程中我们要学会如何获取bitmap,第一篇已经罗列了多种从项目中取图片转bitmap,这里就不多说了...目录 1、图片相关概念    1.1 ARGB介绍       1.2 Bitmap概念   1.3 色彩模式   1.4 色深和位深   1.5 内存中Bitmap的大小   1.6 系统一般分配的大小...通道,Android切图素材多采用此格式 jpeg:有损压缩图片格式,不支持背景透明,适用于照片等色彩丰富的大图压缩,不适合logo webp:是一种同时提供了有损压缩和无损压缩的图片格式...在Android4.0(API 14)之后支持,无损和透明在Android4.3(API18)之后支持 采用webp能够在保持图片清晰度的情况下,可以有效减小图片所占有的磁盘空间大小...Android中Bitmap所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数 3、压缩的常见方式 质量压缩:降低存储体积(不改变内存中Bitmap的大小) 采样压缩

    1.1K20

    创建支持多种屏幕尺寸的Android应用

    声明支持不同屏幕尺寸也会影响系统如何在较大屏幕上运行应用程序,尤其是,不论应用程序是否运行在屏幕兼容模式。 为了申明应用程序支持的屏幕大小,应该在manifest文件中包含的元素。...同样地,没有必要提供不同的绘图给不同的屏幕尺寸,因为九补丁位图能调整任何大小。然而,应当提供可替代的九补丁文件的版本给不同屏幕密度。...同样,如果在应用程序中包含了其他位图绘图(如菜单图标或应用程序的其他图像),应当提供可替代的版本或者每一个版本给不同的密度。...然而,谷歌播放目前不支持过滤属性(在Android3.2上),因此,如果应用程序不支持小屏幕,应该继续使用其它尺寸的属性。...如果正在创建一个使用BitmapFactory(如从文件或者流)的位图,可以使用BitmapFactory。选择定义一个已经存在的位图的特性,这决定系统是否或如何调整位图。

    2.7K60

    在Android中高效的加载大图

    但是我要告诉你一个问题,让我们看看这张解码过的图片在内存中实际占据的空间大小。 bitmap.getByteCount()方法将返回bitmap的大小。...原因如下: 存储在磁盘上的图片是被压缩过的(以JPG,PNG或类似的格式存储)。 一旦将图片加载到内存中,它就不再被压缩,并占用尽可能多的图片的所有像素所需的内存空间。...我们不能将缩放比设置为一个常数,所以我们必须根据图片的大小来计算它的值。 如何计算inSampleSize的值取决于您。我的意思是,你可以根据你的需要编写inSampleSize的计算方法。...在android官方文档中,计算结果是2的幂次方。...现在,bitmap.getByteCount()方法返回的图片大小是3.1 MB。这是它在内存中的大小。正如我之前说过的,图片存储在磁盘上时会被压缩。

    82820

    Tensorflow Lite人体姿势跟踪功能上线:基于PosNet的实时人体姿态估计

    「PoseNet」是一种视觉模型,它可以通过检测关键身体部位的位置来估计图像或者视频中的人体姿势。例如,该模型可以估计图像中人的手肘和/或膝盖位置。...通过姿势估计可以实现多种可能性。举几个例子,开发者可以在身体图像上进行增强现实,动画化计算机图形人物,以及分析运动员在运动中的步态。...该应用程序对每张传入的摄像头图像执行以下操作: 从摄像头预览中获取图像数据并将它从「YUV_420_888」转换成「ARGB_888」格式。 创建一个位图对象来保存来自 RGB 格式帧数据的像素。...将位图裁剪并缩放到模型输入的大小,以便将其传递给模型。 从 PoseNet 库中调用「estimateSinglePose()」函数来获取「Person」对象。...将位图缩放回屏幕大小,在「Canvas」对象上绘制新的位图。 使用从「Person」对象中获取的关键点位置在画布上绘制骨架。显示置信度超过特定阈值(默认值为 0.2)的关键点。

    2.1K30

    2--安卓多媒体之Bitmap操作全解析

    矩阵变换的分析 ---- 一、Bitmap简介 我们知道.bmp格式的图片文件,它是一种无压缩,保留全信息的图片格式,称为位图 Bitmap是一个安卓对图片的封装类,名称便是位图,它可以解析二进制的图片文件...(如,宽、高、每个像素点等) 二进制流的来源可以是多种多样的(文件、网络、项目资源、二进制流、字节数组等),其实本质是一样的 安卓中使用位图工厂:BitmapFactory来解析二进制图片流,其中提供了很多...L.d(bitmap.getGenerationId() + L.l());//id:464 L.d(bitmap.getPixel(0, 0) + L.l());//某点像素:-3159629 L.d(bitmap.getByteCount...就像一把剑,没有人用就没有意义一样 最常用的展示方式就是使用ImageView的setImageBitmap()方法 mIdIvShow.setImageBitmap(bitmap); 3.如何根据已知...Matrix.png ---- 下节讲述Android自身对Matrix的封装函数

    97120

    Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?

    另外,本文的依据主要来自 android 5.0 的源码,其他版本可能略有出入。文章难免疏漏,欢迎指正~ 1、占了多大内存?...不过,抛开 Android 这个平台不谈,从出图的角度来看的话,jpg 格式的图片大小也不一定比 png 的小,这要取决于图像信息的内容: JPG 不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片...如果仅仅是为了 Bitmap 读到内存中的大小而考虑的话,jpg 也好 png 也好,没有什么实质的差别;二者的差别主要体现在: alpha 你是否真的需要?...等等,请收起你的口水,Android 官方并不支持这个。是的,你没看错,官方并不支持。...4、结语 写了这么多,我们来稍稍理一理,本文主要讨论了如何运行时获取 Bitmap 占用内存的大小,如果事先根据 Bitmap 的格式、读取方式等算出其占用内存的大小,后面又整理了一些常见的 Bitmap

    3.4K111
    领券