Посмотрите на /usr/include/linux/fb.h структуры вроде fb_var_screeninfo. Могут быть различные глубины цвета и форматы. Я слишком часто вижу 16 бит / пиксель, сейчас у меня 32. Введите fbset отдельно, и он покажет текущие настройки. Который почти наверняка будет одной из записей в /etc/fb.modes.
upstairs# fbset
mode "1920x1080"
geometry 1920 1080 1920 1080 32
timings 0 0 0 0 0 0 0
rgba 8/16,8/8,8/0,8/24
endmode
Imagemagick может работать, если вы можете сделать так, чтобы он точно соответствовал нужному режиму. Я, вероятно, написал бы что-то на C, дюжина или около того строк, вызывающих libjpeg или libpng, могут распаковать изображение в массив памяти. Ваши биты / цвет и т.д. Должны совпадать, или вам нужно что-то написать для преобразования. Хороший опыт.
Кроме того, вместо чтения / записи / dev / fb0 в виде файла, откройте () его, чтобы получить дескриптор файла, затем mmap (), чтобы вы работали с указателем на память. Это намного быстрее при выполнении переводов, по крайней мере, в 10 раз.
Но для размещения изображений на экране я просто устанавливаю qiv. Затем нажмите F1 для получения справки, но при отображении изображения знак «х» наполовину будет записан в корневое окно, если вы этого хотите. Или просто установите его в качестве обоев в настройках рабочего стола, и он будет появляться при каждой загрузке.