首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux C++ XImage RGB <-> BGR?

linux C++ XImage RGB <-> BGR?
EN

Stack Overflow用户
提问于 2013-06-10 13:38:05
回答 1查看 2.2K关注 0票数 2

我有一个包含图片中RGBA (实际上我并不关心alpha通道)值的向量,我想用xlib来绘制这张图片。所以我必须使用一个XImage,为了获得一个,我需要使用XCreateImage

XCreateImage需要"char *data“,所以首先我需要转换向量。我不知道我所做的是否有效,但这是有效的:

代码语言:javascript
复制
vector<unsigned char> picture;
cunsigned char *unsigneddata = &picture[0];
char *data;
data =  (char*)unsigneddata;

所以现在我可以用“数据”来画我的图了,

代码语言:javascript
复制
XImage *ximage = XCreateImage(display, visual /*errata : not window*/, 24, ZPixmap, 0, data, width, height, 32, 0);
XPutImage(dpy, *_w,gc,ximage,0,0,0,0,width,height);

我在屏幕上的图片有红色和蓝色通道的反转。我不知道我是不是搞乱了什么,或者它是否正确,我是否必须交换频道。如果我必须交换,除了在数组上执行循环来交换它们之外,还有另一种方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-11 02:58:55

你猜怎么着?我受够了他妈的!我只是交换了值..。

代码语言:javascript
复制
  // invert red and blue, xlib ams dumb, it using BGR instead of RGB...
  unsigned char red, blue;
  int i;
  for(i=0;i<image.size();i+=4){
   red  = image[i+2];
   blue = image[i];
   image[i]   = red;
   image[i+2] = blue;
  }

感谢您的评论n.m.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17017432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档