返回顶部
首页 > 资讯 > 精选 >怎么在Android应用中利用Bitmap对图片进行优化
  • 876
分享到

怎么在Android应用中利用Bitmap对图片进行优化

androidroibitmap 2023-05-31 07:05:53 876人浏览 安东尼
摘要

这篇文章给大家介绍怎么在Android应用中利用Bitmap对图片进行优化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎

这篇文章给大家介绍怎么在Android应用中利用Bitmap对图片进行优化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

前言

在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎,就容易造成OOM(Java.lang.OutofMemoryError - 内存溢出),本篇博客,我们将一起探讨Bitmap的性能优化

为什么Bitmap会导致OOM?

每个机型在编译ROM时都设置了一个应用堆内存VM值上限dalvik.vm.heapgrowthlimit,用来限定每个应用可用的最大内存,超出这个最大值将会报OOM。这个阀值,一般根据手机屏幕dpi大小递增,dpi越小的手机,每个应用可用最大内存就越低。所以当加载图片的数量很多时,就很容易超过这个阀值,造成OOM。

图片分辨率越高,消耗的内存越大,当加载高分辨率图片的时候,将会非常占用内存,一旦处理不当就会OOM。例如,一张分辨率为:1920x1080的图片。如果Bitmap使用 ARGB_8888 32位来平铺显示的话,占用的内存是1920x1080x4个字节,占用将近8M内存,可想而知,如果不对图片进行处理的话,就会OOM。

在使用ListView, GridView等这些大量加载view的组件时,如果没有合理的处理缓存,大量加载Bitmap的时候,也将容易引发OOM

Bitmap基础知识

一张图片Bitmap所占用的内存 = 图片长度 x 图片宽度 x 一个像素点占用的字节数

Bitmap.Config,正是指定单位像素占用的字节数的重要参数。

怎么在Android应用中利用Bitmap对图片进行优化

其中,A代表透明度;R代表红色;G代表绿色;B代表蓝色。

ALPHA_8

表示8位Alpha位图,即A=8,一个像素点占用1个字节,它没有颜色,只有透明度

ARGB_4444

表示16位ARGB位图,即A=4,R=4,G=4,B=4,一个像素点占4+4+4+4=16位,2个字节

ARGB_8888

表示32位ARGB位图,即A=8,R=8,G=8,B=8,一个像素点占8+8+8+8=32位,4个字节

RGB_565

表示16位RGB位图,即R=5,G=6,B=5,它没有透明度,一个像素点占5+6+5=16位,2个字节

一张图片Bitmap所占用的内存 = 图片长度 x 图片宽度 x 一个像素点占用的字节数

根据以上的算法,可以计算出图片占用的内存,以100*100像素的图片为例

怎么在Android应用中利用Bitmap对图片进行优化

BitmapFactory解析Bitmap的原理

BitmapFactory提供的解析Bitmap的静态工厂方法有以下五种:

Bitmap decodeFile(...)Bitmap decodeResource(...)Bitmap decodeByteArray(...)Bitmap decodeStream(...)Bitmap decodeFileDescriptor(...)

--结束END--

本文标题: 怎么在Android应用中利用Bitmap对图片进行优化

本文链接: https://lsjlt.com/news/224161.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在Android应用中利用Bitmap对图片进行优化
    这篇文章给大家介绍怎么在Android应用中利用Bitmap对图片进行优化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎...
    99+
    2023-05-31
    android roi bitmap
  • 怎么在Android利用Matrix对图片进行旋转
    本篇文章给大家分享的是有关怎么在Android利用Matrix对图片进行旋转,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。自定义一个View,用来控制这两个图片的旋转。com....
    99+
    2023-05-31
    android matrix roi
  • Android应用中怎么对图片进行压缩
    Android应用中怎么对图片进行压缩?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为何要压缩体积的原因如果你的图片是要准备上传的,那动辄几M的大小肯定不行的,况且图片分辨率大...
    99+
    2023-05-31
    android roi
  • 如何在Android应用中对图片进行压缩
    本篇文章给大家分享的是有关如何在Android应用中对图片进行压缩,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、质量压缩法设置bitmap options属性,降低图片的质...
    99+
    2023-05-31
    android 中对 roi
  • 怎么对图片进行SEO优化
    这篇文章主要介绍了怎么对图片进行SEO优化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。怎么让搜索引擎更好的识别图片内容呢?能让搜索引擎识别图片的内容,最好的方法就是加上一个...
    99+
    2023-06-13
  • 怎么在python中利用opencv对图片进行旋转
    今天就跟大家聊聊有关怎么在python中利用opencv对图片进行旋转,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译...
    99+
    2023-06-14
  • 如何在Android应用中使用C++对Bitmap对象进行处理
    这篇文章将为大家详细讲解有关如何在Android应用中使用C++对Bitmap对象进行处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。步骤如下:a.编写JNI接口函数//java接口函数p...
    99+
    2023-05-31
    android bitmap c++
  • Android应用中怎么对超大的图片进行加载
    本篇文章为大家展示了Android应用中怎么对超大的图片进行加载,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 1.Bitmap的使用- 2.Android手机中加载图片的原理   有的时...
    99+
    2023-05-31
    android roi
  • 如何在Android中利用ImageView.src对图片进行拉伸处理
    如何在Android中利用ImageView.src对图片进行拉伸处理?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方法如下:<LinearLayout andro...
    99+
    2023-05-31
    imageview android age
  • 怎么在Android应用中利用Activity对动画进行切换
    今天就跟大家聊聊有关怎么在Android应用中利用Activity对动画进行切换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Android Activity切换动画Android ...
    99+
    2023-05-31
    android activity roi
  • 怎么在Android应用中利用ViewHolder优化Adapter
    怎么在Android应用中利用ViewHolder优化Adapter?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体方法如下:public class MarkerItemA...
    99+
    2023-05-31
    adapter viewholder android
  • 怎么在Android中利用SpannableString对内容进行格式化
    这篇文章将为大家详细讲解有关怎么在Android中利用SpannableString对内容进行格式化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。要实现的效果:将话题进行变色并且可以点击提示...
    99+
    2023-05-31
    android spannablestring les
  • 怎么在Android中利用 ksoap2对WebService进行调用
    本篇文章给大家分享的是有关怎么在Android中利用 ksoap2对WebService进行调用 ,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。下载 ksoap2 的 jar ...
    99+
    2023-05-30
    ksoap2 android webservice
  • 怎么在Android应用中利用Bitmap实现一个位图旋转效果
    怎么在Android应用中利用Bitmap实现一个位图旋转效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。位图的旋转也可以借助Matrix或者Canvas来实现。通过po...
    99+
    2023-05-31
    android bitmap roi
  • 怎么在Android中利用ClassLoader对类进行加载
    本篇文章给大家分享的是有关怎么在Android中利用ClassLoader对类进行加载,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java的类加载设计了一套双亲代理的模式,使...
    99+
    2023-05-31
    classloader android roi
  • 怎么在Android中利用ImageView将图片进行圆形、圆角处理
    本篇文章给大家分享的是有关怎么在Android中利用ImageView将图片进行圆形、圆角处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。基本思路是,自定义一个ImageVi...
    99+
    2023-05-31
    android imageview age
  • 如何在Android中利用ViewFlippe对视图进行翻转
    本篇文章为大家展示了如何在Android中利用ViewFlippe对视图进行翻转,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ViewFlipper是Android自带的一个多页面管理控件且可以自动...
    99+
    2023-05-31
    android viewflipper pp
  • 怎么在Android中利用 listview对数据进行显示
    怎么在Android中利用 listview对数据进行显示?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android  listview数据显示及提示信息...
    99+
    2023-05-31
    android listview roi
  • Android应用中怎么实现利用图片路径查看图片
    Android应用中怎么实现利用图片路径查看图片?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.在项目清单中添加网络访问权限<!--访问网络的权限--> &l...
    99+
    2023-05-31
    android roi
  • Android应用怎么利用wifi对手机进行连接
    Android应用怎么利用wifi对手机进行连接?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先电脑,手机连接同一个网络在Android studio中Terminal中...
    99+
    2023-05-31
    android wifi roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作