Encode bitmap(bmp) file with run-length encoding(RLE), just like RLE4 and RLE8, but extend to RLE16,
RLE24 and RLE32.
Usually, this project will be used in GUI of embedded system, to make the image files smaller, and
save the IO bandwith. If the GUI support JPG or PNG, the compression ratio is much better than RLE,
but how about the embedded system encounters both caculate limitation and IO bandwidth limitation?
Try this project, I hope it can make a banlance between caculation and bandwidth.
But first of all, you should know that the compression ratio of RLE is highly depend on the bitmap
file data, the ratio can larger than 1, only when the same color continuously repeats in one line,
it will gain a smaller compression ratio.
Look in this URL to get more information about run-length encoding
http://en.wikipedia.org/wiki/Run-length_encoding
This compression is not a standard bmp file format. If you want to used this project in your work,
you can compress the image file in you PC first, then compile the rle_decompress.c file into
you embedded software.
Please **NOTE** that, you should run a benchwork first to make sure this compression really makes
your program run faster before you decide to used it in your product.
bmp2rle.dsw and bmp2rle.dsp is the example project build with Microsoft Visual C++ 6.0.
Below is my test result
Total Files Total File Size
939 103,615,696
Compress without palette
Compress Files(ratio < 1) Total File Size Before Compress Total File Size After Compress
738 81,400,208 29,796,894
Compress with palette
Compress Files(ratio < 1) Total File Size Before Compress Total File Size After Compress
884 103,294,188 35,542,056
Any problem, please contact LaiZhefeng@gmail.com.