Look at /usr/include/linux/fb.h at structs like fb_var_screeninfo. There can be a variety of color depths and formats. I see 16 bits/pixel way too often, right now I have 32. Type fbset by itself and it will display the current settings. Which will almost certainly be one of the entries in /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 might work if you can make it match exactly the mode you need. I'd probably write something in C, a dozen or so lines calling libjpeg or libpng can decompress an image into a memory array. Your bits/color etc. needs to match or you need to write something to convert it. Good experience.
Also rather than reading/writing /dev/fb0 as a file, open() it to get a file descriptor then mmap() it so you're working with a pointer to the memory. It's much faster at doing transfers, at least 10x.
But for putting images on the screen I just install qiv. Then hit F1 for help, but an x while displaying an image will write it semi-permanently to the root window if that's what you want. Or just set it as wallpaper in Desktop Preferences and it will come up every boot.
Unfortunately it doesn't seem to be possible to prevent 'fbi' from displaying a status bar at the bottom of the screen. This is a bit of a showstopper for various applications... – Jules – 2013-05-23T07:46:41.210
3@Jules On Debian 8 (testing), there is a
-noverboseoption which makes it display just the image itself; however, this is not documented in the man page, but is only in the "usage:" for the it. – Abbafei – 2013-06-23T08:32:26.217Does it work? I previously built a copy from the source on the author's web page, and that did have the option, but the option did not seem to actually do anything at all in that version. – Jules – 2013-06-27T16:54:46.707
@Jules
-noverboseworks for me usingfbion raspbian when I installed it usingapt-get install fbi. – D. Woods – 2013-07-30T09:12:26.093