一、前言

Android 开发中经常使用到 Bitmap,而 Bitmap 的默认加载个格式为 ARGB_8888 。而关于 ARGB_8888 的介绍,网上基本都是只说明 ARGB_8888 格式每个像素占 4 个字节,每个通道(A:alpha,R:red,G:green,B:blue)有 8 位,可以表示 0-255 个值。
但是,你是否知道它内部每个通道的排列顺序吗?是 A-R-G-B 这样依次排列还是别的排列方式呢?

二、实验和证明

1. 准备工作

  • 首先创建一张指定颜色的图片
  • 再获取到 Bitmap 的像素信息,最后打印出来其各通道值。

2. 编写代码

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;import java.nio.Buffer;
import java.nio.ByteBuffer;public class MainActivity extends Activity {private static final String TAG = "MainActivity";private ImageView displayIv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);bitmap.eraseColor(0xff336699); // AARRGGBBbyte[] bytes = new byte[bitmap.getWidth() * bitmap.getHeight() * 4];Buffer dst = ByteBuffer.wrap(bytes);bitmap.copyPixelsToBuffer(dst);// ARGB_8888 真实的存储顺序是 R-G-B-ALog.d(TAG, "R: " + Integer.toHexString(bytes[0] & 0xff));Log.d(TAG, "G: " + Integer.toHexString(bytes[1] & 0xff));Log.d(TAG, "B: " + Integer.toHexString(bytes[2] & 0xff));Log.d(TAG, "A: " + Integer.toHexString(bytes[3] & 0xff));displayIv = (ImageView) findViewById(R.id.display_iv);displayIv.setImageBitmap(bitmap);}}

3. 运行代码

4. 结论

通过实践,我们可以得知,ARGB_8888 格式图片的各通道顺序其实不是 ARGB,而是 RGBA

你真的知道 ARGB_8888 格式图片的 A、R、G、B 每个通道的排列顺序吗?相关推荐

  1. android自定义Glide图片加载(以更改Glide缓存路径和使用ARGB_8888的图片格式为例)

    首先引入Glide: compile 'jp.wasabeef:glide-transformations:2.0.1' 自定义GlideModule package tsou.cn.glidetes ...

  2. Android将webp格式图片转换为png格式方法

    最近项目优化的时候发现app上选择的部分图片上传到服务器后无法显示或者直接上传失败,经过跟踪发现问题出现在webp图片格式上,说到webp格式的图片,这是google自己发明的一种图片格式,在网络上使 ...

  3. 纯C++实现24位bmp格式图片的读取和修饰

    问题:现有一张bmp图片,要求将它读取到程序中并进行灰度化.水平翻转.模糊.茶色滤镜四种效果的一种,并输出新图片,如下所示: 命令行输入: 其中: 参数1:-b/g/s/r,先后表示blur(模糊), ...

  4. raw格式图片读取与显示C++,opencv

    Bayer是相机内部的原始图片, 一般后缀名为.raw.很多软件都可以查看, 比如PS.Bayer 模式被广泛应用于 CCD 和 CMOS 摄像头,它允许从一个单独平面中得到彩色图像.我们相机拍照下来 ...

  5. ISP【三】———— raw读取、不同格式图片差异

    part zero: 如何处理.raw格式数据,读取和转化 matlab读取raw图 (mark读取图片尺寸和位数均可设置,图片尺寸M,N,图片数据类型8bit,16bit改成uint16) clea ...

  6. python opencv 中bmp转raw格式图片并展示

    python中bmp转raw格式图片并展示 import numpy as np import cv2 img = cv2.imread('data/04/04(1).bmp') # 这里需要我们在当 ...

  7. fp格式图片_2020Pamp;I | 适马无反版100-400镜头亮相,fp全幅微单满足不同需求

    相信了解摄影和相机的人一定知道适马,凭借不惜体积和重量的堆料设计,旗下推出的不少镜头都拥有相当优秀的光学素质.第22届上海国际摄影器材和数码影像展览会(P&I SHANGHAI )期间,适马展 ...

  8. 3_HEIF/heic格式图片文件解析(20190107)

    3_HEIF/heic格式图片文件解析(20190107) HEIF/heic格式图片文件解析(20190107) 文章目录 参考: https://zhuanlan.zhihu.com/p/3466 ...

  9. ajax传递多个base64,H5移动开发Ajax上传多张Base64格式图片到服务器

    这篇文章主要为大家详细介绍了H5移动开发Ajax上传多张Base64格式图片到服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 废话不多说,直接看代码吧 1.上传组件 2.展示添加上的图片 v ...

最新文章

  1. 视频云直播:场景、技术及优化
  2. python爬取文件归类_python爬取各类文档方法归类汇总
  3. CentOS各个版本镜像下载地址
  4. 【转】硬盘的寻址和工作模式
  5. Java编程中忽略这些细节,Bug肯定找上你
  6. 华为鸿蒙平板界面,华为工作人员曝光:鸿蒙OS正式版,平板手机将采用全新UI界面...
  7. as button onitemclicklistener为null_为vue3.0的学习TS解读高级类型
  8. 正则表达式入门(c#)
  9. IE8浏览器跨域接口访问异常的解决办法
  10. 教程 | 如何使用Docker、TensorFlow目标检测API和OpenCV实现实时目标检测和视频处理
  11. paip.截屏功能流程说明
  12. Win10下安装Ubuntu16.04-空间不可用-个人志
  13. python模块专题——1.faker
  14. python输入包含20个数的列表_学习笔记20:Python基础使用(参数,嵌套,列表,元组,字典,字符串等)...
  15. 【教程】通过lothelper实现短信接收测试
  16. python 英语翻译 excel_python批量将excel内容进行翻译、写入
  17. Zookeeper介绍、原理及应用
  18. 史上最全网址导航大全,让世上没有找不到的好东西
  19. 寻找数组中第k大的数
  20. weather.com.cn的天气预报

热门文章

  1. B站品牌如何实现年轻化营销?看奥利奥在B站解锁更多种草“玩法”!
  2. vue 图片裁剪工具_使用Vue.js的图片裁剪工具,包括预览
  3. Photoshop滤镜制作精致水晶美女头像
  4. 工具分享|ArcHydro水文工具条
  5. A5s 150M便携式智能无线路由器
  6. UIWebView与JavaScript的那些事儿
  7. 机器学习使用兰氏距离的最小距离聚类法以及散点图展示
  8. 腾讯公布Q3财报,云服务连续三季度同比增长超100%
  9. win10linux日历表,UI超棒!新版微软Win10日历体验手记
  10. C语言——实例010 打印楼梯,同时在楼梯上方打印两个笑脸。