Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tarlis
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 12
#1

Разъясните что тут написано, ну пожалуйста - C++

10.06.2013, 18:14. Просмотров 395. Ответов 1
Метки нет (Все метки)

Задали лабу - перевод рисунка с форматом BMP из цветного в ч/б изображение, нашёл структурку, но не могу разобраться что она делает... Если конкретно не совсем понимаю как она цвета на RGB палитру разбивает...
Код струкрутки на С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void ToBlackWhite(char *szBmp)
{
    BITMAPFILEHEADER bfh;
    BITMAPINFOHEADER bih;
    RGBTRIPLE pix;
 
    DWORD dwRWBuf;
 
    HANDLE hFile = CreateFileA(szBmp,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
 
    ReadFile(hFile,&bfh,sizeof(BITMAPFILEHEADER),&dwRWBuf,NULL);
    ReadFile(hFile,&bih,sizeof(BITMAPINFOHEADER),&dwRWBuf,NULL);
 
    SetFilePointer(hFile,bfh.bfOffBits,NULL,FILE_BEGIN);
 
    DWORD nPixel = bih.biWidth * bih.biHeight;
 
    while(nPixel--) 
    {
        memset(&pix,0,sizeof(RGBTRIPLE));
        ReadFile(hFile,&pix,sizeof(RGBTRIPLE),&dwRWBuf,NULL);
 
        BYTE scale = (BYTE)(0.3*pix.rgbtRed + 0.59*pix.rgbtGreen + 0.11*pix.rgbtBlue);
        pix.rgbtRed = scale;
        pix.rgbtGreen = scale;
        pix.rgbtBlue = scale;
 
        SetFilePointer(hFile,-sizeof(RGBTRIPLE),NULL,FILE_CURRENT);
        WriteFile(hFile,&pix,sizeof(RGBTRIPLE),&dwRWBuf,NULL);
    }
 
    CloseHandle(hFile);
}

Заранее спасибо!
Можно с ссылкам на литературу...

нашёл тут, если кому интересно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 18:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разъясните что тут написано, ну пожалуйста (C++):

Подскажите пожалуйста что тут происходит - C++
Объясните как формируются числа a,b,c,d, пожалуйста. char buf; gets(buf); unsigned int a = buf | (buf << 8) | (buf << 16);...

Для чего тут вначале 2 раза написано ThreeD? - C++
ThreeD ThreeD::operator++() { x++; // Инкремент координат x, y и z y++; z++; return *this; // Возвращаем...

Объясните пожалуйста как тут работает сортировка и что такое ostream_iterator<string> - C++
вот код. Объясните пожалуйста как тут работает сортировка, сам не могу разобраться. Оссобенно это ostream_iterator&lt;string&gt; не понимаю...

Разъясните пожалуйста - C++
int sd(int n, int d = 1) { if(n == 0) { return 0; } else { return d &lt;= n ? (n % d == 0...

Разъясните пожалуйста задачу - C++
Вот задача. #include &lt;iostream&gt; using namespace std; const int n=3; struct STRUCT { char fio; int phone; int...

Разъясните пожалуйста (классы) - C++
1. Зачем в следующем коде в 1 строке стоит амперсанд? 2. Что значит RHS и когда его использовать? 3. Зачем стоит звездочка в 6 строке...

1
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,472
Записей в блоге: 2
10.06.2013, 19:54 #2
Цитата Сообщение от Tarlis Посмотреть сообщение
не могу разобраться что она делает
Здесь важно сначала подумать. Что такое в принципе черно-белое изображение? Это изображение в котором все три цветные компоненты имеют одно значение. Собственно вся матчасть содержащая этот принцип сосредоточена в строке 23, где и происходит перевод цвета пикселя в черно-белый формат. Почему именно такие коэффициенты - не знаю, возможно выбраны эмпирически.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2013, 19:54
Привет! Вот еще темы с ответами:

Разъясните пожалуйста фрагмент программы - C++
Даны произвольные числа a b c.Написать программу,которая проверяла бы,можно ли построить треугольник с такими длинами сторон, и если можно,...

Разъясните пожалуйста некоторые детали... - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #define eof -1 int main() { int c; printf(&quot;Make...

Проверьте пожалуйста. Правильно ли написано. - C++
Программа работает как в задании. Но может есть ошибки? Подскажите. #include &lt;iostream&gt; #include &lt;string&gt; using namespace std;...

Разъясните пожалуйста пару строк кода - C++
Программа 1: #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; using namespace std; int main() { char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru