当前位置:编程学习 > wap >>

android argb像素格式转化为abgr格式

SkPaint pa;
pa.setColor(0xff123456);
SkRect r;
r.set(0,0,100,100);
srccanvas.drawRect(r,pa);
unsigned char* add = (unsigned char*)sf->data;
LOGD("0x%x,  0x%x,  0x%x,  0x%x",add[0],add[1],add[2],add[3]);
       打印显示:0x12, 0x34, 0x56, 0xff
                  r     g      b     a
打印出来的像素排列方式为 rgba格式。请问,在drawRect中有对像素格式进行转化吗?
如果是按0xff123456这个格式排列的话,打印出来的应该是:0x56, 0x34, 0x12, 0xff
貌似r,b交换位置了。在什么地方有颜色格式的转化吗? --------------------编程问答-------------------- unsigned char* add = (unsigned char*)sf->data;

这行代码很神奇,java代码里面肯定没有指针这玩意。

难道你这是c/c++写的? 
如果是,那么你应该会做4个字节的倒序排列吧? 没什么困难啊 --------------------编程问答--------------------
引用 1 楼 youngplayee 的回复:
unsigned char* add = (unsigned char*)sf->data;

这行代码很神奇,java代码里面肯定没有指针这玩意。

难道你这是c/c++写的? 
如果是,那么你应该会做4个字节的倒序排列吧? 没什么困难啊

是在jni层使用c++写的,每个像素点做转换会很慢。我的意思是android本身有没有转换的地方 --------------------编程问答-------------------- android中Color是一个整形值,是以 A R G B追加的方式组成的。
即A<<24 | R<<16 | G<<8 | B的方式组成的。
你是不是可以自己转换呢?
比如有个颜色值是Color= 0x FF DD 99 88
A= Color>>>24
R=Color>>16&0xFF
G=Color>>8&0xff
B=Color&0xff
--------------------编程问答-------------------- 那你这rgb数组是怎么得到的呢?

一般来说是先从网络下载图片文件,然后生成java里的图片对象,然后根据图片对象得到RGB数组。这时候,有参数可以选择RGB数组的顺序
补充:移动开发 ,  Android
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,