2015-08-23 19 views
0

Я пытаюсь подключить графическую библиотеку Clean (в частности, ObjectIO) к Linux с помощью GDK. Библиотека состоит из части, не относящейся к ОС, которую я не хочу касаться из-за проблем с совместимостью, и конкретной части ОС, которую я могу коснуться.Создание GdkPixbuf из необработанных данных Bitmap

Одна из функций, которую я должен реализовать, - это тот, который берет необработанные данные из файла .bmp и должен построить GdkPixbuf. Эта функция должна быть записана в C.

Мне известно о функции gdk_pixbuf_new_from_file(), но я не получаю имя файла (и не могу изменить это, так как он находится в части библиотеки, не относящейся к ОС). Я получаю только исходные данные.

Я видел this manual entry, и я предполагаю, что я мог бы использовать gdk_pixbuf_new_from_data(), но это требует, чтобы вы знаете строки походки изображений, из которых я не уверен, как получить его.

Есть ли способ получить строку из файла? Если нет, единственная возможность, которую я вижу, - создать временный файл с данными, а затем позвонить gdk_pixbuf_new_from_file() - но это было бы действительно уродливо.

+0

Я не удивлюсь, если строка шаг всегда был равен шириной. – icktoofay

+0

@icktoofay сначала, я думал, ширина * 3 (вам нужно три байта для 24-битного изображения), но это пока не показывает хороших результатов. Я также пробовал номера вокруг этого. Кажется, это не так просто, к сожалению ... – Keelan

ответ

1

Вы хотите использовать функцию:

int stride = cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, ImageWidth);