C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Help, bmp
AlexSv
Отправлено: 15.03.2004, 18:08


Не зарегистрирован







Подскажите, кто знает: как bmp-шную картинку сделать из цветной в черно-белую в C++B?
gauldot
Отправлено: 16.03.2004, 12:40


Ученик-кочегар

Группа: Участник
Сообщений: 22



Помоему это можно сделать только написав свою функцию.
Принцип преобразования такой:

int Rn, Gn, Bn; // R,G,B исходного пиксела (цветного)
int Rk, Gk, Bk; // R,G,B пиксела-результата (оттенка серого)
Rk = Gk = Bk = (Rn + Gn + Bn)/3;

CODE

// На форме должен присутствовать Image1 и кнопка Button1
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   int R, G, B;
   int I;          // Средняя интенсивность цветного пиксела.

   Graphics::TBitmap *pBitmap = Image1->Picture->Bitmap;

   int H = pBitmap->Height;
   int W = pBitmap->Width;

   for (int Y= 0; Y<H; Y++)
   {
       BYTE *lline = (BYTE *)pBitmap->ScanLine[Y];
       for (int X= 0; X<W; X++)
       {
           R= (lline)[X*3+2];
           G= (lline)[X*3+1];
           B= (lline)[X*3];

           I = (R+G+B)/3;

           lline[X*3]   =I;
           lline[X*3+1] =I;
           lline[X*3+2] =I;
      }
   }
   Image1->Repaint();
}



P.S. Если ты имел ввиду преобразование в ДВУХцветную картинку
(Чёрный и белый), то могу подкинуть пару методов.

Вернуться в Вопросы программирования в C++Builder