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个字节的倒序排列吧? 没什么困难啊 --------------------编程问答--------------------
是在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