I’ll explain how to do framebuffer screenshots on 16-bit and 32-bit framebuffer. For 16-bit this is fully based on http://docs.blackfin.uclinux.org/doku.php?id=framebuffer
Capturing screenshots
Whatever the bit-depth of your framebuffer, the first step is to capture the frambuffer raw data on the board:
1 |
cat /dev/fb0 > screen.raw |
Now the you need to take the raw image, and convert it to a standard image format. This step depends on what type of display is there
Converting 16-bit Framebuffer screenshot (RGB565) into png
To convert the raw rgb data extracted from /dev/fb0, use iraw2png perl script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/usr/bin/perl -w $w = shift || 240; $h = shift || 320; $pixels = $w * $h; open OUT, "|pnmtopng" or die "Can't pipe pnmtopng: $!\n"; printf OUT "P6%d %d\n255\n", $w, $h; while ((read STDIN, $raw, 2) and $pixels--) { $short = unpack('S', $raw); print OUT pack("C3", ($short & 0xf800) >> 8, ($short & 0x7e0) >> 3, ($short & 0x1f) << 3); } close OUT; |
To do the conversion, type the following command in the host:
1 |
./iraw2png 640 480 < screen.raw > screen.png |
where 640 and 480 are respectively the width and height of your framebuffer.
This has been tried on a 16-bit framebuffer on EM8620 series.
Converting 32-bit Framebuffer screenshot (ARGB, RGBA, BGRA…) into png
The solution proposed here is not as neat as the blackfin’s solution for 16-bit framebuffer, however this still works.
First you’ll need to install Gimp 2 in your computer (Linux or Windows).
Then open the screenshot as a raw file (Select File Type: Raw Image Data) in Gimp2, enter the width and height as well of the color arrangement, RGB, RGBA etc…
If the image looks OK, but the colors do not match, then that probably because the R (red), G (Green), B(Blue) and A (Alpha) fields are mixed up. You’ll just need to use the Channel Mixer to re-arrange or permute the colors. (e.g. RGBA -> BGRA). To get to that menu click on Colours->Components->Channel Mixer and there you’ll be able to set the Red channel to Blue and the Blue Channel to Red or whatever settings required to get the right colors.
Finally simply save this file as PNG or any format you like.

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress