我正在尝试将一个Clean图形库(特别是ObjectIO)移植到Linux与GDK。该库包括一个非操作系统特定的部分,由于兼容性问题我不想碰它,以及一个操作系统特定的部分,我可以碰它。
我必须实现的函数之一是从.bmp文件中获取原始数据的函数,并且必须从中构建GdkPixbuf
。这个函数必须用c语言编写。
我知道函数gdk_pixbuf_new_from_file()
,但我没有得到文件名(并且无法更改,因为它在库的非操作系统特定部分中)。我只得到原始数据。
我看到了这个手动条目,我想我可以使用gdk_pixbuf_new_from_data()
,但这需要你知道图像的行步幅,其中我不确定如何得到它。
是否有办法从文件中获得行跨距?如果没有,我看到的唯一可能性是用数据创建一个临时文件,然后调用gdk_pixbuf_new_from_file()
-但这真的很难看。
您想使用以下函数:
int stride = cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, ImageWidth);