Android - Bitmap

Android Bitmap深入介绍(一)---基础 在Android应用开发中,我们经常需要跟图片打交道,而图片一个很麻烦的问题是占用内存非常大,经常导致OOM,了解Bitmap相关信息,不同sdk版本中Android图片处理的变化,以及一些优化处理的方式对我们平时开发中对图片的会非常有帮助。这篇先介绍Bitmap基础内容,关于像素,存储信息,以及加载。 阅读详情
AI摘要

本文深入解析Android中Bitmap的核心概念、创建方式(Factory.decodeXXX与createBitmap)及关键内存优化策略,包括及时回收、inSampleSize缩放压缩、色彩配置选择、异常捕获、软引用、RecyclerView中的Bitmap内存复用(inBitmap机制)等,重点强调Native内存分配特性与OOM防控措施。

一、概念

JPG/PNG/GIF/WebP 等是图片的文件格式,其核心目的是压缩体积方便存储和传输,最终都会被解码为 Bitmap(SVG 除外,矢量图直接渲染路径。GIF 是多帧 Bitmap 序列,原生解码只能获取第一帧),它是 Android 系统中图片在内存中的最终表现形式(对象),把图片以「像素点矩阵」的形式存储(比如 100x100 的图片就是 10000 个像素点的集合)。

1.1 图像

图片大小指图片在磁盘 / 网络传输时的大小(如 100KB 的 JPG),由压缩算法决定。
内存占用指图片解码后在内存中的大小,计算公式:内存占用 = 宽 × 高 × 单个像素点占用字节数(每个像素字节数:ARGB_8888 占 4 字节,RGB_565 占 2 字节,安卓默认 ARGB_8888)。同一设备上,图片占用内存跟 drawable 目录分辨率大小变化成正比,同一 drawable 目录,图片占用内存跟设备分辨率大小成正比。
色深某分辨率下一个像素能接受的颜色数量,用2ⁿ来表示,8bit就是2的8次方。
DPI 和 PPI都指的是每英寸长度上的点数。DPI用于打印机输出、鼠标的扫描取样等,PPI专用于显示器。

一张 1080×1920 的 JPG 图片,文件体积可能只有 500KB,解码为 Bitmap(ARGB_8888)后,内存占用 = 1080×1920×4 = 8,294,400 字节 ≈ 8MB。

1.2 AndroidStudio文件夹

mipmap只是用来放应用图标的,避免在存放很多图片的 drawable 文件夹中找起来麻烦。

1.2.1 mipmap 文件夹

文件夹建议图标分辨率
mipmap-mdpi48*48
mipmap-hdpi72*72
mipmap-xhdpi96*96
mipmap-xxhdpi144*144
mipmap-xxxhdpi192*192

1.2.2 drawable 文件夹

如果系统没有在手机分辨率对应的 drawable 文件夹内找到图,就会往更高分辨率的文件夹去找,还找不到就会去 drawable-nodpi 中找,仍旧找不到就会去更低分辨率的文件夹中找。找到的图比目标分辨率大就缩小显示,反之会放大显示,这个倍数 = 高DPI / 低DPI,但 drawable-nodpi 中的图不会被缩放,是多大就显示多大。

DPI名称=范围值

分辨率名称=屏幕分辨率

density密度(1dp显示多少px)

0< ldpi ≤ 120

QVGA=240*320

0.75倍(120dpi/160=0.75px)

120< mdpi ≤ 160(基线)

HVGA=320*480

1倍(160dpi/160=1px)

160< hdpi ≤ 240

WVGA=480*800

FWVGA=480*854

1.5倍(240dpi/160=1.5px)

240< xhdpi ≤ 320

720P=720*1280

2倍(320dpi/160=2px)

320< xxhdpi ≤ 480

1080P=1080*1920

3倍(480dpi/160=3px)

480< xxxhdpi ≤ 640

4K=2460*3840

4倍(640dpi/160=4px)

//获取屏幕宽高的dpi
val xdpi = getResources().getDisplayMetrics().xdpi
val ydpi = getResources().getDisplayMetrics().ydpi

二、Bitmap

一个用来存储图像每个像素颜色信息的对象。通过它可以获取图像文件信息,进行图像颜色变换、剪切、旋转、缩放等操作,并可以指定格式保存图像文件。主要用于 ImageView 设置背景或当作 Canvas 画布使用。
imageView.setImageBitmap(bitmap)
val canvas: Canvas = Canvas(bitmap)

色彩配置 Bitmap.Config

描述了像素的存储方式,会影响色彩质量(色深)和透明度。

ALPHA_8

【只有透明度】每个像素只存储透明度没有颜色,适合用来遮盖如夜间模式,每个像素占8位(1个字节)。

RGB_565

【内存优化用】R(占5位)+G(占6位)+B(占5位) =一个像素占16位(2个字节)。

ARGB_8888

【占用内存多】A(占8位)+R(占8位)+G(占8位)+B(占8位) =一个像素占32位(4个字节)。(该项为默认项,Android 4.4以后RGB_565被废弃都会以该项执行)

ARGB_4444

【已废弃】 A(占4位)+R(占4位)+G(占4位)+B(占4位) =一个像素占16位(2个字节)。画质惨不忍睹已废弃,在Android 4.4以后即便设置了都会以ARGB_8888去执行。

压缩格式 Bitmap.CompressFormat

JEPG

以 JEPG 算法进行图像压缩,是一种有损压缩,quality压缩质量设置0-100值越小压缩越狠。不支持透明度会以黑色背景填充。

PNG

以 PNG 算法进行图像压缩,是一种无损压缩,会忽略0-100的quality压缩质量设置,支持透明度。

WEBP

【已废弃】以 WebP 算法进行有损压缩,quality压缩质量设置0-100值越小压缩越狠,Android 10开始设置100为无损压缩。已废弃,使用下面两个更明确的方式。

WEBP_LOSSY

以 WebP 算法进行有损压缩,quality压缩质量设置0-100值越小压缩越狠越慢。体积比JEPG小40%但编码时间长8倍。

WEBP_LOSSLESS

以 WebP 算法进行无损压缩,quality压缩质量设置0-100值越大压缩越狠越慢。体积比PNG小26%但编码时间长5倍。

2.1 创建

2.1.1 通过工厂 BitmapFactory.decodeXXX( )

从各种数据中创建位图,通过options实现获取图片信息、配置缩放比例。

public static Bitmap decodeFile(String pathName)

public static Bitmap decodeFile(String pathName, Options opts)

通过文件路径(SD卡)创建Bitmap。

public static Bitmap decodeStream(InputStream is)

public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts)

通过输入流(网络、Assets)创建Bitmap。

public static Bitmap decodeResource(Resources res, int id)

public static Bitmap decodeResource(Resources res, int id, Options opts)

通过资源id(APP中)创建Bitmap。

public static Bitmap decodeByteArray(byte[] data, int offset, int length)

public static Bitmap decodeByteArray(byte[] data, int offset, int length, Options opts)

通过字节数组(二进制数据)创建Bitmap。

//资源文件(drawable/mipmap/raw)
val bitmap1 = BitmapFactory.decodeResource(context.resources, R.drawable.icon_weixin)
//资源文件(assets)
var bitmap2: Bitmap? = null
context.assets.open("XXX.png").use { inputStream ->
    bitmap2 = BitmapFactory.decodeStream(inputStream)
}
//SD卡文件
val path = Environment.getExternalStorageDirectory().path + "XXX.png"
val bitmap3 = BitmapFactory.decodeFile(path)

选项设置 BitmapFactory.Options

inJustDecodeBounds

设置为 true 时,decodeXXX( )只获取图片信息而不会将图片加载进内存 。

inSampleSize

采样率,通过对图像的宽高设置缩小比例以达到减少图片像素的目的,来避免OOM发生概率。若设置为4(每四个像素取一个返回而其它的舍弃)则宽高都为原来的1/4,图为原来的1/16。

outWidth

outHeight

outMimeType

获取图片的宽度。

获取图片的高度。

获取图片的MINE类型。

inDensity

inTargetDensity

给位图设置的密度。

绘制到新图上的密度。

inScaled

默认为true,inDensity和inTargetDensity不为0时会自动进行缩放以匹配inTargetDensity。

inPreferredConfig

设置色彩配置,默认是Bitmap.Config.ARGB_8888。

inMutable

inBitmap

设为true,使得Bitmap可被修改(支持重用)。

传入要被重用的Bitmap对象。

fun getBitmapFromFile(file: File, iv: ImageView): Bitmap {
    //仅解码边界(获取尺寸但不加载进内存)
    val options = BitmapFactory.Options()
    options.inJustDecodeBounds = true
    BitmapFactory.decodeFile(file.path, options)
    //计算缩放比例
    options.inSampleSize = calculateInSampleSize(options, iv)
    //再次解码
    options.inJustDecodeBounds = false  //取消
    return BitmapFactory.decodeFile(file.path, options)
}

fun calculateInSampleSize(options: BitmapFactory.Options, iv: ImageView): Int {
    //获取图片的宽高类型
    val picWidth = options.outWidth
    val picHeight = options.outHeight
    val picType = options.outMimeType
    //获取控件宽高
    val viewWidth = iv.measuredWidth
    val viewHeight = iv.measuredHeight
    //进行缩放计算
    var inSampleSize = 1
    if (picWidth > viewWidth || picHeight > viewHeight) {   //只要图片比控件大就缩放
        val widthRatio = picWidth / viewWidth
        val heightRatio = picHeight / viewHeight
        //选择最小比率,这样保证相差不大的那条边不至于图片缩得比控件还小
        inSampleSize = if (widthRatio < heightRatio) widthRatio else heightRatio
    }
    return inSampleSize
}

2.1.2 通过静态 Bitmap.createBitmap( )

对现有的位图进行处理后得到一个新的副本。(以下只列举参数最多的重载)

createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)

裁剪一个Bitmap。source是原图,x、y是新图第一个像素的坐标,width、height是新图的宽高(x+width、y+height不能超出原图的宽高),m是矩阵用来对新图进行平移/旋转/缩放/错切操作,filter是否给新图添加滤波效果。

createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter)

缩放一个Bitmap,dstWidth 和 dstHeight 是新图宽高。

val matrix = Matrix().apply {
    postScale(0.8f, 0.9f)    //缩放(四参重载的后两位表示以该点为中心)
    postRotate(-45.21f) //旋转(负数为逆时针)
    postTranslate(100f, 80f) //移动
}
Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true)

2.2 处理

compress( )

boolean compress(CompressFormat format, int quality, OutputStream stream)

将位图压缩到指定的输出流,可看作将位图保存到文件中。quelity:0-100压缩质量,PNG无损会忽略该项。

copy( )

Bitmap copy(Config config, boolean isMutable)

创建一个副本,config色彩配置,isMutable是否可以修改新图像素值。

recycle( )

isRecycle( )

void recycle( )

回收位图占用的内存空间。

boolean isRecycled( )

判断位图内存是否已释放。

extractAlpha( )

Bitmap extractAlpha( )

创建一个只有透明度的副本,色彩配置为ALPHA_8。

getWidth( )

getHeight( )

int getWidth( )

获取位图的宽度。

int getHeight( )

获取位图的高度。

getByteCount( )

int getByteCount()

获取Bitmap的字节数。

isMutable( )

像素是否可修改。

getScaledWidth( )

getScaledHeight( )

获取指定密度转换后的图像宽度。

获取指定密度转换后的图像高度。

getByteCount()

getAllocationByteCount()

返回图片的大小。

返回Bitmap大小(因为可以复用,换成更小的图也还是占用原来的大小)。

三、内存优化

val maxMemory = Runtime.getRuntime().maxMemory() / 1024
println("获取每个APP最高可用内存大小:$maxMemory kb")
  • 一般图片来源是自己提供的只需要注意及时回收,如果是外部的,需要注意显示的时候缩小,以及异常捕获避免APP崩溃。

  • 一个进程可以简单分为 Java内存 和 Native内存。Bitmap对象在Java堆,像素数据在Native,不同Android版本的分配不同。Native的好处是共享整个手机的内存,不受单个APP分配的内存限制。

Android 2.3.3

API 10

Android 3.0~7.1

API 11~25

Android 8+

API 26+

Bitmap对象存放

Java堆

Java堆

Java堆

像素数据存放

Native

Java堆

Native

内存优化

bitmap.recycle( )

软引用

3.1 及时回收

不能保证立即就被回收,只是加快回收的到来。在确保该bitmap对象在代码中不会再使用的时候调用,一般在 onStop( ) 或 onDestroy( ) 中进行。一般不需要自己去干预GC。
if (bitmap != null && !bitmap.isRecycled) {
    bitmap.recycle()
    bitmap = null
}
System.gc()

3.2 缓存通用对象

例如用户未设置头像的默认图片,缓存在本地能减少流量消耗(DiskLruCache),缓存在内存能减少对象重复创建(LruCache)。

3.3 压缩后显示

在小小的控件上显示高分辨率图片不会提升多少视觉效果反而会占用很多内存,而系统分配给每个APP可用内存大小是固定的超出就会引起OOM内存溢出,因此在展示高分辨率图片的时候需要进行压缩以接近控件的大小来显示。(见上方代码)

  1. 在 decodeXXX() 时使用 BitmapFactory.Options 参数,将它的 inJustDecodeBounds = true 能禁止为 Bitmap 分配内存(返回null而不是Bitmap了)。
  2. 这样只会解码边界,会对 outWidth、outHeight、outMineType 属性进行赋值,也就拿到了图片的宽高和类型。
  3. 然后和控件的宽高进行缩放比例计算赋值给 inSampleSize。
  4. 再次调用 decodeXXX() 将 options参数的 inJustDecodeBounds  = false 后传入。

3.4 色彩编码配置

使用Bitmap.Config,将色彩配置设为低级别的RGB_565。

3.5 捕获异常

对创建 Bitmap 的代码进行 try-catch,即便OOM也不会闪退。

3.6 drawable文件夹

只有一套图的话, 按照最大众的 1080P 放在 drawable-xxhdpi 目录里。放在更低密度文件夹下,被放大意味着像素点变多占用更大内存,放在更高密度文件夹下,针对 2K 4K 设计的图片本身已经很大体积了,缩放也起不到多少节省内存的作用。

3.7 软引用

实现内存敏感的告诉缓存,内存空间不足时才回收这些对象的内存。

3.8 RecyclerView中内存复用

        当RecyclerView的Item移出页面之后,会放在缓存池当中;当下面的item显示的时候,首先会从缓存池中取出缓存,直接调用onBindViewHolder方法,所以依然会重新创建一个Bitmap,因此针对列表的缓存特性可以选择Bitmap内存复用机制,避免了频繁地创建Bitmap导致内存抖动。

        在BitmapFactory中提供了Options选项,当设置 inMutable=true,inBitmap = 要被复用的Bitmap对象,就代表开启了内存复用,此时新建的Bitmap只要小于等于要被复用的Bitmap,那么都会放在这块内存中,避免重复创建。

Android bitmap保姆级教学 Bitmap是一个final类,因此不能被继承。Bitmap只有一个构造方法,且该构造方法是没有任何访问权限修饰符修饰,也就是说该构造方法是friendly,但是谷歌称Bitmap的构造方法是private(私有的),感觉有点不严谨。不管怎样,一般情况下,我们不能通过构造方法直接新建一个Bitmap对象。Bitmap是Android系统中的图像处理中最重要类之一。Bitmap可以获取图像文件信息,对图像进行剪切、旋转、缩放,压缩等操作,并可以以指定格式保存图像文件。 阅读详情

相关推荐

保姆级教程:用杰理701N可视化SDK搞定ANC降噪配置(从工具到代码全流程)

本文提供了一份详细的杰理701N可视化SDK配置ANC降噪功能的教程,涵盖从开发环境搭建到代码集成的全流程。通过图形化工具和代码示例,帮助开发者快速掌握ANC参数配置技巧,优化降噪效果,解决常见问题。

weixin_30616969的博客 450

Android之 Bitmap使用

Bitmap使用

qq_29848853的博客 5606

工业级以太网通信实战:用FPGA驱动YT8531 PHY芯片的完整避坑指南

本文是一份针对工业级以太网通信的实战指南,详细讲解了如何使用FPGA驱动YT8531 PHY芯片。内容涵盖从硬件设计(电源、时钟、复位)到MDIO接口驱动开发、PHY配置与链路管理的全流程,并重点剖析了十个常见的开发“陷阱”及其解决方案,旨在帮助工程师在复杂的工业环境中实现稳定可靠的以太网通信连接。

weixin_29191669的博客 144

Android:安卓学习笔记之Bitmap的简单理解和使用

Android Bitmap的简单理解和使用Android Bitmap一.Bitmap的定义二.Bitmap的格式2.1 存储格式2.2 压缩格式三.Bitmap创建方法3.1 BitmapFactory3.1.1、 Bitmap.Options类3.2 Bitmap静态方法3.3 创建Bitmap的总结四.常见函数4.1 函数及其参数4.2 常用操作五.常见问题5.1 Bitmap与Canvas,View,Drawable的关系5.2 使用Bitmap如何造成内存溢出的?5.3怎么解决或者避免Bitm

JMW1407的博客 1万+

情感分析在金融领域的应用:舆情影响股价预测

我们都知道,股价的波动受到多种因素的影响,而大众的情绪和看法就是其中很重要的一部分。我们在日常生活中都有根据别人的评价来判断事物好坏的经验,在金融市场里,舆情就像是大众对某家公司的集体评价,它能反映出市场参与者的情绪和预期。学习这方面的知识,能帮助投资者更好地把握市场动态,做出更明智的投资决策,无论是个人投资者还是金融机构的分析师,都能从中受益。有一天,你看到某家知名企业被曝光了严重的产品质量问题,新闻铺天盖地,股民们也都在热议纷纷,负面情绪弥漫。这时,你会不会觉得这家公司的股价可能要下跌了呢?

AI 原生应用开发的博客 1147

Sigrity OptimizePI IC Device Power Pin Inductance Analysis模式如何计算IC电源管脚电感操作指导

Sigrity OptimizePI IC Device Power Pin Inductance Analysis模式可以计算电容到IC电源管脚的电感,用于评估电容位置对于IC电源管脚的效果,如何分析,以下图为例进行说明。Capacitors:选择层面,这里选择top layer(IC在top层),下方可以选择电容的size,这里选择All Size。IC devices,输入U*, A*, B*, Q*, P*,将所有这些字母开头的器件都识别为IC。模式如何计算IC电源管脚电感操作指导。

weixin_54787054的博客 408

Android 之 Bitmap (位图) 全解析 Part 1

我们对这里的某些参数的值进行设置,比如inJustDecodeBounds设置为true避免OOM(内存溢出), 什么,不知道OOM,没事,等下一点点跟你说清楚!这个,只要我们获取了Bitmap对象,就可以调用相关方法来获取对应的参数了,getByteCount获得大小, getHeight和getWidth这些~这里就不写了,自己查文档!有时,可能你想把图片上的某一角扣下来,直接通过Bitmap的createBitmap()扣下来即可 参数依次为:处理的bitmap对象,起始x,y坐标,以及截取的宽高。

leyang0910的博客 1570

YOLOv9原创自研:卷积魔改 | 一种新颖的风车形卷积(PConv)融合注意力机制,加强微弱小目标检测能力

为了进一步提升小目标检测能力,风车形卷积(PConv)融合注意力机制进一步提升小目标检测能力

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 361

Android安卓Bitmap底层JNI操作

1.添加依赖 头文件: #include <android/bitmap.h> 库依赖:CMakeLists.txt里需要添加jnigraphics库的依赖: target_link_libraries(${MY_LIBRARY_NAME} jnigraphics ... 2.主要方法介绍 2.1 AndroidBitmap_getInfo: 功能:获取Bitmap...

q345911572的博客 2279

手把手教你用ESP32-C3打造智能聊天机器人-立创实战派

本文将详细介绍如何利用立创ESP32-C3开发板,烧录小智AI程序,快速实现一个功能强大的聊天机器人。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 5533

用 XCO 库一键找出某个 ABAP 类的全部子类

ABAP XCO库子类枚举技术解析 本文介绍了在ABAP项目中如何利用XCO库高效获取类的继承层次结构。传统方法使用CL_ABAP_CLASSDESCR或手动维护映射表存在效率低、易遗漏的问题。新方法通过XCO库的IF_XCO_AO_CLASS接口,可简洁地获取父类的所有子类(包括间接子类)。 核心API链式调用: 获取类句柄:xco_cp_abap=>class() 导航子类集合:subclasses->all 获取结果:get()返回类引用表或get_names()返回类名列表 典型应用场景

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 127

安卓Android 图片/Bitmap工具类

5、将Bitmap转换为Base64字符串并进行URL编码(需用到上面的方法)(1)此方法包含了压缩Bitmap,根据目标尺寸缩放等。1、根据uri解码图片,通常用在从相册选择照片。2、将图片的Bitmap转换为byte类型。4、将Bitmap转换为Base64字符串。(2)此方法为简单的根据uri解码图片。图片/Bitmap工具类。

m0_54198552的博客 528

Pandas滚动窗口的妙用:动态计算列数据的最大值

Pandas的滚动窗口(rolling window)功能是数据分析中处理时间序列数据的重要工具。本文通过实例演示了如何使用rolling(window=4).max()计算DataFrame列A的滚动最大值,并将结果存入新列Max_Range。该方法会在4个元素的滑动窗口内计算最大值,前3行因数据不足显示为NaN。这种技术广泛应用于金融分析(如股价波动)、数据平滑和趋势识别等场景,能有效帮助分析数据的动态变化特征。示例展示了从数据准备到结果输出的完整流程,体现了Pandas在处理滑动窗口计算时的高效性和便

m0_74337424的博客 53

bitmap xml大小 安卓_Android bitmap压缩方法

明人不说暗话,开门见山地说Bitmap所占用的内存 = 图片长度 x 图片宽度 x 一个像素点占用的字节数。3个参数,任意减少一个的值,就达到了压缩的效果。所以压缩又可以分为两种方法,质量压缩和宽高压缩1.质量压缩bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteArrayOutputStream );主要是通过设置quality来降...

weixin_36261385的博客 425

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Android】安卓常见的内存泄漏:OOM,bitmap

一、关于OOM 1. android图片加载导致的OOM分析及有效解决办法(BitmapUtils) [摘] OOM原因分析 android每一个应用都有一个独立的进程,每个进程都是实例化了dalvik虚拟机实例的linux进程。Dalvik 主要管理的内存有 Java heap 和 native heap 两大块。Android系统对dalvik的vm heapsize作了硬性限制,当java进程申请的java空间超过阈值时,就会抛出OOM异常(这个阈值可以是48M、24M、16M等,视机型而定),而na

Kindle君的博客 1727

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

谈谈安卓的Bitmap与Drawable

前言 搞安卓有些时间了,对图片老是存在一些疑惑:给View设置背景的原理是啥?啥是Drawable呢?Bitmap又是啥呢 ?Bitmap与Drawable有啥区别呢?整天看着这些熟悉有陌生的名词,当面对这些问题时却发现自己能说出来的却很少,,,, 今天就来谈谈自己的发现。 康康Drawable 首先用一句话来总结下Drawable吧:Drawable是对安卓中所有可绘制图像的抽象,也就是说安卓中的图像是以Drawable形式存在的。 为啥说安卓中的图像是以Drawable形式存在的? 这点就要从View展

dev晴天的博客 1908

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

bitmap xml大小 安卓_在XML Android的位图图像大小

In my xml file, i am using bitmap as the followingandroid:src="@drawable/Icon"android:gravity="center"/>Here the image width of the icon exceeds the screen.I tried android:width="100dp" and all. Bu...

weixin_39837124的博客 258

Android开发中Bitmap的全面总结

Bitmap称为位图,内部结构是像素矩阵排列。它由A、R、G、B通道组成,其中A代表Alpha,R代表Red,G代表Green。我们在开发中,通常把图片转为Bitmap来处理。 一、Bitmap结构类型 Bitmap按照内部结构,分为6种类型Config:ALPHA_8、RGB_565、ARGB_4444、ARGB_8888、RGBA_F16、HARDWARE。常用类型是RGB_565和ARG...

徐福记456 4万+

bitmap xml大小 安卓,在XML Android的位图图像大小

In my xml file, i am using bitmap as the followingandroid:src="@drawable/Icon"android:gravity="center"/>Here the image width of the icon exceeds the screen.I tried android:width="100dp" and all. Bu...

weixin_30486919的博客 226

android 本地图片转bitmap,安卓获取本地图片并转化成bitmap回传给原Activity

写前说一说写这个技术博客,也是一时心血来潮。主要针对自己在学习方面有一些记录。今天建项目的时候,做个测试,一不小心就忘了在AndroidMainfest中注册activity,结果就报错了。错误如下:没有注册activity报错关于MyApplication继承application的MyApplication,是Android中的一个全局变量。举个最简单的例子,一个包含有登录功能的app,在登录...

weixin_35974411的博客 1798

Android Bitmap详解

一、Bitmap: Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。 常用方法: public void recycle()  // 回收位图占用的内存空间,把位图标记为Dead public fina...

假装你是大灰狼的专栏 6084

bitmap xml大小 安卓_[Android] XML Bitmap

XML Bitmap 是一个用XML定义的文件放在资源目录,定义的对象是图片,为bitmap定义别名,这个文件可以给bitmap定义一些额外的属性。例如:抖动。文件存放位置:res/drawable/filename.xml语法:xmlns:android="http://schemas.android.com/apk/res/android"android:src="@[package:]dra...

weixin_39785970的博客 298

android bitmap对象,android 创建bitmap的多种方式

–Bitmap代表这一张位图,BitmapDrawable里封装的图片就是一个Bitmap对象。如果要将Bitmap对象封装成BitmapDrawable对象只需要用构造方法即可。//讲bitmap对象包装成BitmapDrawable对象BitmapDrawable drawable = new BitmapDrawable(bitmap);//将BitmapDrawable对象转换为bitma...

weixin_42392438的博客 3159

Android Bitmap

android BItmap内存

qq_33512072的博客 1152

安卓报错Canvas: trying to use a recycled bitmap android.graphics.Bitmap

安卓报错Canvas: trying to use a recycled bitmap android.graphics.Bitmap 问题出现描述: 在开发安卓应用涂鸦模块的时候,当对图片进行了涂鸦,然后保存涂鸦,此时点击保存按钮的时候快速点击。导致点击第一次是触发‘保存按钮’的点击事件,第二次是触发‘涂鸦’的事件。但是此时图片已经进行保存操作,系统开始回收Bitmap缓存资源,此时涂鸦事件相当于在已经被回收的Bitmap上添加涂鸦,导致报错。 问题代码: public void onClick(Vi

WiLL_XS的博客 2519

bitmap xml大小 安卓_Android实现波浪线效果(xml bitmap)

我们要实现的效果如下:在这之前先带大家了解一下xml bitmap,何为XML Bitmap?XML Bitmap是一个用XML定义的文件放在资源目录,定义的对象是图片,为bitmap定义别名,这个文件可以给bitmap定义一些额外的属性。例如:抖动。1、文件存放位置res/drawable/filename.xml2、语法xmlns:android="http://schemas.android...

weixin_39989190的博客 172
上一篇: View 使用 - 标准控件的一些设置
下一篇: Android 优化 - 内存缓存 LruCache
Jomurphys
博客等级 码龄9年 1768粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值