RLE (Run-Length-Encoding) Compression Routine in MFC for 256-Color Bitmaps

Environment: VC6, MFC

This is a RLE compression routine, written in MFC. I wrote this because I cannot find handy code for such a thing.

RLE compression is useful when saving a SIMPLE Windows bitmap. My implementation is rather stupid and not optimized. Therefore, if the source bitmap is complex (like the one in the demo app window shown below), you could even get a bigger bitmap file after compression.



Click here for a larger image.

The compression routine is wrapped in an MFC bitmap control class, CDVDBitmapControl, which you can put conveniently in a dialog. The usage is easy:

  1. Add a static control (say, IDC_STATIC_BITMAP) in the dialog for the bitmap control.
  2. Add an #include "DVDBitmapControl.h" in the header file of your dialog.
  3. Add a member variable (say, m_bmp) of type "CDVDBitmapControl" in your dialog class.
  4. In OnInitDialog(), add this line:
    m_bmp.SubclassDlgItem( IDC_STATIC_BITMAP, this).
  5. Call m_bmp.LoadBitmapFile(CString) to load a bitmap into the control.
  6. Call m_bmp.SaveBitmapFile(CString) to save a bitmap into an 8-bit RLE bitmap.

If you need only the compression code, you can just extract the CDVDBitmapControl::CompressInRLE8() and CDVDBitmapControl::EndOfLine() routines from "DVDBitmapControl.cpp". It is quite straightforward to use them.

I did not write the decompression part because the Windows API LoadImage() already does it.

PS: in the demo app, if the loaded bitmap is not in 256 colors, [Save] will not work.

Downloads

Download demo project - 20 Kb
Download source - 5 Kb


Comments

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: March 19, 2015 @ 1:00 p.m. ET / 10:00 a.m. PT The 2015 Enterprise Mobile Application Survey asked 250 mobility professionals what their biggest mobile challenges are, how many employees they are equipping with mobile apps, and their methods for driving value with mobility. Join Dan Woods, Editor and CTO of CITO Research, and Alan Murray, SVP of Products at Apperian, as they break down the results of this survey and discuss how enterprises are using mobile application management and private …

  • Remember getting your first box of LEGOS as a kid? How fun it was putting the pieces together, collaborating with your friends to create something new? Now, as an IT professional, assembling and maintaining a Lego-like collaboration infrastructure isn't what you signed up for. Piecing together disparate systems of record for email, web meetings and other applications is about as painful as stepping on a pile of Legos. Download the e-book to learn how implementing a collaboration system connects systems of …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date