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

Кодирование бинарного изображения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Закон Деметры http://www.cyberforum.ru/cpp/thread1327094.html
Здравствуйте, уважаемые форумчане. Нужна ваша помощь. Не могли бы вы написать пример кода "Закона Деметры"(или же патеррна "не разговаривайте с неизвестными"). Желательно на с++, ну на крайний случай можно и на с#. Заранее спасибо) пысы: пример нужен любой, даже можно и самый простой.
C++ Каким образом можно использовать регулярное выражение regex из .NET под С++ Работаю в VS Express 2012. Насколько понимаю, эта библиотека должна подключаться и к проекту на С++, но как это сделать, чтобы не надо было переделывать само регулярное выражение? Или, как вариант, подскажите средства для трансляции таких регулярных выражений под библиотеку для С++. Дали несколько примеров на С#. Один из них: Regex r = new Regex(@"\(+\)|((|\*)+)"); string s = "(a+b)+c";... http://www.cyberforum.ru/cpp/thread1326562.html
C++ Изменять политику безопасности разрешая или запрещая подключения к компьютеру
Есть программа сервер, которая слушает на определенном портe и к ней могут подключатся другие компьютеры с помощью программы клиента, но вот как сделать чтобы не все могли подключится, а только те, которые имеют разрешенные ip? То есть, клиент и сервер - не мои программы(исходного кода нету), но мне нужно создать программу посредника, в которой можно будет указывать с каких ip можно подключится к...
Узнать степень загруженности системы C++
есть потребность написать утилиту, которая бы считывала состояние системы (загрузка процессора, сколько осталось ОЗУ, свободное место на ХДД, состояние сетевого адаптера) и отправляла в нужное мне место. с последним проблем нет, а вот первое... подскажите, где и что почитать на эту тему?
C++ Не передаётся параметр http://www.cyberforum.ru/cpp/thread1323169.html
SendMessage(Buttons.Array, WM_COMMAND, WindowSizeQuery, (LPARAM)(&(Rectangles.Array)));. В этой строке на дебаге адрес равен 0x22f640, в оконной процедуре MinimalWindowRectangle=(RECT*)(((CREATESTRUCT*)Second)->lpCreateParams);, но после этой строки MinimalWindowRectangle равен NULL. А всё, решил. Надо MinimalWindowRectangle=(RECT*)Second;.
C++ Подбор пароля для rar архива Стоит задача подобрать пароль к rar архиву.Я новичок в этом вопросе (скорее дуб дубом) и времени у меня все меньше , почитал немного и тут на форуме тоже ,нашел Unrar.dll там и примерчик и небольшой мануал прилагался ,но все же возникли вопросы . Для начала ,я взял туже программу что и в примере и немного ее модернизировал ,вовремя роботы с CallbackProc(UINT msg,LPARAM UserData,LPARAM P1,LPARAM... подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2015, 10:47     Кодирование бинарного изображения
Цитата Сообщение от Victrokex Посмотреть сообщение
я беру обычную картинку, делаю ее размером 512х512, и сохраняю в черно-белом формате бмп вот такое изображение
не бывает "обычных" картинок. Файл BMP начинается с заголовка
C++
1
2
3
4
5
6
7
8
9
10
#pragma pack(push, 1)
struct WINBMPFILEHEADER
{
 uint16_t FileType; //4D42
 uint16_t FileSize;// Размер файла
 uint16_t Reserved1;
 uint16_t Reserved2;
 uint32_t BitmapOffset; // Смещение данных
};
#pragma pop(push, 1)
В зависимости от версии дальше может быть
C++
1
2
3
4
5
6
7
8
9
10
#pragma pack(push, 1)
struct WIN2XBUTMAPHEADER
{
 uint32_t Size; //  Размер заголовка
 int16_t Width;
 int16_t Height;
 uint16_t Panels;
 uint16_t BitPerPixels;
};
#pragma pop(push, 1)
Раз нужны только единицы и ноли, то BitPerPixels=1, но дальше идти рано, надо определить версию. Чему равен Size в WIN2XBUTMAPHEADER? Если не 12, то вместо этого заголовка на его месте расположен другой заголовок более поздней версии и данные могут быть сжаты. Если Size=40, то на самом деле вместо этого заголовка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct WIN3XBUTMAPHEADER
{
 uint32_t Size; //  Размер заголовка
 int16_t Width;
 int16_t Height;
 uint16_t Panels;
 uint16_t BitPerPixels;
 uint32_t Compression;
 uint32_t SizeOfBitmap;
 int32_t HorzResolution;
 int32_t VertResolution;
 uint32_t ColorsUsed;
 uint32_t ColorsImportant;
};
#pragma pop(push, 1)
. Можно назад на 12 байт не возвращаться, а сразу декларировать union и если 40, то дочитать оставшиеся 28 байт по указателю на поле Compression.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru