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

  • Agile methodologies give development and test teams the ability to build software at a faster rate than ever before. Combining DevOps with hybrid cloud architectures give teams not just the principles, but also the technology necessary to achieve their goals. By combining hybrid cloud and DevOps: IT departments maintain control, visibility, and security Dev/test teams remain agile and collaborative Organizational barriers are broken down Innovation and automation can thrive Download this white paper to …

  • On-demand Event Event Date: September 10, 2014 Modern mobile applications connect systems-of-engagement (mobile apps) with systems-of-record (traditional IT) to deliver new and innovative business value. But the lifecycle for development of mobile apps is also new and different. Emerging trends in mobile development call for faster delivery of incremental features, coupled with feedback from the users of the app "in the wild." This loop of continuous delivery and continuous feedback is how the best mobile …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds