如何使用XCB或X11显示完整的彩色图像?

3

我可以使用libpng将PNG图像加载到内存中,并获取原始像素数据,也可以使用XCB或纯X11创建具有空白背景的窗口。

接下来该怎么做才能在窗口内显示图像呢?


4
xcb 是一个 X11 客户端库。xcb 所做的一切都是 X11 相关的。也许你的意思是“xcb 或者 Xlib”? - n. m.
1个回答

4

XLib方法如下:

  • 使用与您的可视化相应的深度创建一个XImage结构。
  • 将原始像素数据转换为与您拥有的深度和可视类组合相对应的格式。
  • 调用XPutImage

第二步可以通过调用XPutPixel来实现每个单独的像素。您需要将RGB值转换为像素值。对于15位、16位、24位或32位可视化,这是一个使用位掩码进行微不足道的操作(使用visual->red_mask确定红色组件的放置位置等)。如果要支持8位深度,则必须使用抖动,并分配和使用适当的颜色映射表,可能是一个216元素的彩色立方体。幸运的是,现在只有8位深度的硬件很少见了。

如果调用XPutPixel速度太慢,您将不得不直接实现它所做的工作。使用例如this source提供的指导。

xcb有一个叫做xcb-util-image的库,其功能类似于XImage。我不太熟悉它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接