Я пишу заявку с 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