【问题标题】:How to display a full color image with XCB or X11?如何使用 XCB 或 X11 显示全彩图像?
【发布时间】:2014-09-17 18:12:29
【问题描述】:

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

接下来我应该怎么做才能在窗口中显示图像?

【问题讨论】:

  • xcb 是一个 X11 客户端库。 xcb 所做的一切都是 X11。也许您的意思是“xcb 或 Xlib”?

标签: linux image x11 xcb


【解决方案1】:

XLib方法如下:

  • 创建一个深度适合您视觉的XImage 结构
  • 将原始像素数据转换为与您拥有的深度和视觉等级组合相对应的格式
  • 致电XPutImage

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

如果调用XPutPixel 对您来说太慢,您将不得不执行它的功能。使用例如this source 寻求指导。

xcb 有一个名为 xcb-util-image 的库,其功能与 XImage 类似。我不熟悉。

【讨论】:

    猜你喜欢
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多