Menu

Tree [r3] /
 History

HTTPS access


File Date Author Commit
 branches 2013-01-16 allura [r1] Initial commit
 tags 2013-01-16 allura [r1] Initial commit
 trunk 2013-01-16 allura [r1] Initial commit
 LICENSE 2013-02-03 laizhefeng [r2] Initial commit
 NOTICE 2013-02-03 laizhefeng [r2] Initial commit
 README 2013-02-03 laizhefeng [r2] Initial commit
 bitmap.h 2013-02-03 laizhefeng [r2] Initial commit
 bmp2rle.c 2013-06-25 laizhefeng [r3] add the apache license head lines.
 bmp2rle.dsp 2013-02-03 laizhefeng [r2] Initial commit
 bmp2rle.dsw 2013-02-03 laizhefeng [r2] Initial commit
 bmpstreamlib.lib 2013-02-03 laizhefeng [r2] Initial commit
 queuebuf.c 2013-06-25 laizhefeng [r3] add the apache license head lines.
 queuebuf.h 2013-06-25 laizhefeng [r3] add the apache license head lines.
 rle.h 2013-06-25 laizhefeng [r3] add the apache license head lines.
 rle_decompress.c 2013-06-25 laizhefeng [r3] add the apache license head lines.

Read Me

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.