Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) RemoveColor

 

Removes a certain color from a TImage by replacing it by black.

 

//From http://www.richelbilderbeek.nl
void RemoveColor(TImage * const image, const TColor color)
{
  assert(image!=0);
  assert(image->Picture->Bitmap != 0);
  assert(image->Picture->Bitmap->PixelFormat == pf24bit);

  const int maxx = image->Picture->Bitmap->Width;
  const int maxy = image->Picture->Bitmap->Height;
  const unsigned char red   = GetRValue(color);
  const unsigned char green = GetGValue(color);
  const unsigned char blue  = GetBValue(color);
  for (int y = 0; y != maxy; ++y)
  {
    unsigned char * const myLine
      = static_cast<unsigned char*>(image->Picture->Bitmap->ScanLine[y]);
    for (int x = 0; x != maxx; ++x)
    {
      if ( myLine[x*3+2] == red    //Red
        && myLine[x*3+1] == green  //Green
        && myLine[x*3+0] == blue ) //Blue
      {
        myLine[x*3+2] = 0 ; //Red
        myLine[x*3+1] = 0 ; //Green
        myLine[x*3+0] = 0 ; //Blue
      }
    }
  }
}

//From http://www.richelbilderbeek.nl
void RemoveColor(TImage * const image,
  const unsigned char red,
  const unsigned char green,
  const unsigned char blue  )
{
  assert(image!=0);
  assert(image->Picture->Bitmap != 0);
  assert(image->Picture->Bitmap->PixelFormat == pf24bit);

  const int maxx = image->Picture->Bitmap->Width;
  const int maxy = image->Picture->Bitmap->Height;
  for (int y = 0; y != maxy; ++y)
  {
    unsigned char * const myLine
      = static_cast<unsigned char*>(image->Picture->Bitmap->ScanLine[y]);
    for (int x = 0; x != maxx; ++x)
    {
      if ( myLine[x*3+2] == red    //Red
        && myLine[x*3+1] == green  //Green
        && myLine[x*3+0] == blue ) //Blue
      {
        myLine[x*3+2] = 0 ; //Red
        myLine[x*3+1] = 0 ; //Green
        myLine[x*3+0] = 0 ; //Blue
      }
    }
  }
}

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict