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

whosyour_dady 2012-12-13 04:52:01
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交换位置了。在什么地方有颜色格式的转化吗?
...全文
5377 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
youngplayee 2012-12-18
  • 打赏
  • 举报
回复
那你这rgb数组是怎么得到的呢? 一般来说是先从网络下载图片文件,然后生成java里的图片对象,然后根据图片对象得到RGB数组。这时候,有参数可以选择RGB数组的顺序
Kilnn 2012-12-17
  • 打赏
  • 举报
回复
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
whosyour_dady 2012-12-17
  • 打赏
  • 举报
回复
引用 1 楼 youngplayee 的回复:
unsigned char* add = (unsigned char*)sf->data; 这行代码很神奇,java代码里面肯定没有指针这玩意。 难道你这是c/c++写的? 如果是,那么你应该会做4个字节的倒序排列吧? 没什么困难啊
是在jni层使用c++写的,每个像素点做转换会很慢。我的意思是android本身有没有转换的地方
youngplayee 2012-12-14
  • 打赏
  • 举报
回复
unsigned char* add = (unsigned char*)sf->data; 这行代码很神奇,java代码里面肯定没有指针这玩意。 难道你这是c/c++写的? 如果是,那么你应该会做4个字节的倒序排列吧? 没什么困难啊

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧