linux - 如何使用 XCB 或 X11 显示全彩色图像?

标签 linux image x11 xcb

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

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

最佳答案

XLib方法如下:

  • 创建深度适合您的视觉效果的 XImage 结构
  • 将原始像素数据转换为与您拥有的深度和视觉级别组合相对应的格式
  • 调用XPutImage

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

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

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

关于linux - 如何使用 XCB 或 X11 显示全彩色图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24963361/

相关文章:

linux - 生成网页的图像(例如 jpg)?

java - 解密不适用于生产版(Red Hat Enterprise Linux 7),但适用于 UAT(基于 SUSE 的 Linux 发行版)

c - UDisks 脚本列出所有已安装的 USB 设备

android - 我的 android 应用程序可以下载图像,但不会出现在图库中

jquery - 从链接创建图像

x11 - 为 xmessage 设置 X11 "type"属性

C套接字内存溢出

linux - 在aws ec2上如何找到可以访问的ip来查看play framework主页?

c++ - Visual C++ 按钮的透明背景颜色

linux - 使用 Linux 的海量直播视频流