在png之间交换的红色和蓝色通道 - > cairo - > X11

时间:2015-01-14 14:53:26

标签: png x11 endianness cairo

我使用libcairo2,版本1.13.0~20140204-0ubuntu1将一些PNG文件放入X11 Pixmap。它基本上有效,但红色和蓝色通道交换。我知道这与字节序或BGR与RGB格式有关。但是,我没有在Cairo或X11库中找到任何部分进行此交换。

我目前的代码在这里:

cairo_surface_t* cairo_source = cairo_image_surface_create_from_png(filename.c_str());

Pixmap pixmap_dest = XCreatePixmap(display, 
                                   RootWindow(display, screen), 
                                   cairo_image_surface_get_width(cairo_source),
                                   cairo_image_surface_get_height(cairo_source), 
                                   DefaultDepth(display, screen)
                                  );

cairo_surface_t* cairo_dest = cairo_xlib_surface_create(display, 
                                                        pixmap_dest,
                                                        DefaultVisual(display, screen), 
                                                        cairo_image_surface_get_width(cairo_source),
                                                        cairo_image_surface_get_height(cairo_source)
                                                       );

cairo_t* cr = cairo_create(cairo_dest);

cairo_set_source_surface(cr, cairo_source, 0.0, 0.0);

cairo_paint(cr);

有关如何更改/解决此问题的任何想法?

0 个答案:

没有答案