In walks the mimo, it's a usb connected display, we found drivers for it here. You can extend your X desktop onto the screen using the supplied drivers, but we only wanted to display one image at a time on the screen. We opted to use a combination of tools to just cat data directly to the framebuffer device, and yes this incredibly silly arrangement actually works. Here is the script we are using, we hope to replace this with something compiled later.
#!/bin/sh
SIZE='800x480!'
RESIZED=`mktemp -u /tmp/XXXXXXXX`.png
CONVERTED=`mktemp /tmp/XXXXXXXX`
if [ xxx${FRAMEBUFFER}xxx == 'xxxxxx' ]; then
FRAMEBUFFER=/dev/fb0
fi
CURRENT=/var/www/lighttpd/assets/current.jpg
while [ 1 ]
do
convert -resize $SIZE $CURRENT $RESIZED
mkdfiff -f RGB16 $RESIZED > $CONVERTED
dd if=$CONVERTED of=$FRAMEBUFFER bs=1 skip=24
sleep 30
done
Hopefully useful to someone else out there....
Here is our (Ben Rose and I) first attempt at a C version of the above... framebugger.tar.bz2
/* read color value from pixel (left->right, up-> down) then convert
* from RGB32 to RGB16 using code from directfb */
for (j = 0; j gdImageSY(gdPtr); j++) {
for (i = 0; i gdImageSX(gdPtr); i++) {
c = RGB32_TO_RGB16(gdImageGetPixel(gdPtr, i, j));
fwrite(&c,2,1,fbout);
}
}