gpt4 book ai didi

rust - xcb 有没有办法将文件加载到像素图中?

转载 作者:行者123 更新时间:2023-11-29 08:20:17 24 4
gpt4 key购买 nike

我正在使用 rust-xcb 编写应用程序。但是,当我尝试将文件加载到像素图中时,我找不到任何方法来完成它。我还使用 image 库来加载图像文件 (jpg)。

但是我对xcb不熟悉,请问xcb有没有办法将像素缓冲区或文件加载到pixmap中?或者我可以找到另一个图书馆来做这件事?

我已经搜索过了。 xcb pixmap 和 bitmap 的一些文档充满了 TODO。我试过 xcb-util-image,但没有找到我需要的东西。

我的代码如下:

let foreground = self.connection.generate_id();
xcb::create_gc(
&self.connection,
foreground,
screen.root(),
&[
(xcb::GC_FOREGROUND, screen.white_pixel()),
(xcb::GC_GRAPHICS_EXPOSURES, 0),
],
);
let mut img = image::open(background_src).unwrap();
let img_width = img.width();
let img_height = img.height();

xcb::create_pixmap(
&self.connection,
24,
pixmap,
self.window_id,
img_width as u16,
img_height as u16,
);
let img_buffer = img.to_rgb().into_raw();
xcb::put_image(
&self.connection,
xcb::IMAGE_FORMAT_Z_PIXMAP as u8,
pixmap,
foreground,
img_width as u16,
img_height as u16,
0,
0,
0,
24,
&img_buffer,
);
self.flush(); // Flush the connection

最佳答案

根据 XCB 文档,像素图和窗口都是可绘制对象:https://xcb.freedesktop.org/colorsandpixmaps/ (“在窗口或像素图上工作相同的操作采用 xcb_drawable_t 参数”)

所以,一旦你有 created你的 Pixmap,你将它作为第三个参数传递给 put_image .无需担心将 Pixmap 转换为 Drawable;它们都只是您端 u32 的类型别名,并且它们都在 X 服务器端使用相同的 ID 空间(正如相同的文档所说,“像素图基本上是一个窗口,它不是'显示在屏幕上").

要生成 data 参数中的内容,可能只需执行与 libpng 相同的操作即可source 有,但是用 Rust 而不是 C。

关于rust - xcb 有没有办法将文件加载到像素图中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54712690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com