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

GDI+ неправильно сохраняется изображение - C++

Восстановить пароль Регистрация
 
klsaymon
38 / 38 / 8
Регистрация: 28.05.2011
Сообщений: 257
Записей в блоге: 1
27.11.2011, 20:18     GDI+ неправильно сохраняется изображение #1
Всем доброго времени суток!
Возникла проблема при сохранении BMP при помощи функций GDI+.
Делаю последовательно вызовы LockBits и UnlockBits, после чего сохраняю все в результирующий файл, размер которого оказывается почти в 4 раза больше исходного.
Вот кусок кода:
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
34
int main()
{
    // исходный файл
    wchar_t *pwsFileName =  L"1.bmp";
 
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
 
    Bitmap *bitmap = new Bitmap(pwsFileName);
    BitmapData *bitmapData = new BitmapData();
 
    Rect rect(0, 0, bitmap->GetWidth(), bitmap->GetHeight());
 
    bitmap->LockBits(
        &rect,
        /*ImageLockModeRead | */ImageLockModeWrite,
        PixelFormat32bppARGB,
        bitmapData);
 
    bitmap->UnlockBits(bitmapData);
 
    CLSID bmpClsId;
    GetEncoderClsid(L"image/bmp", &bmpClsId);
 
    // результирующий файл
    Status st = bitmap->Save(L"res.bmp", &bmpClsId);
 
    delete bitmapData;
    delete bitmap;
    GdiplusShutdown(gdiplusToken);
 
    return 0;
}
Как я понял, все происходит из-за того, что в результирующем файле поле бит/пиксел (28-29 биты) равен 20, а в исходном 8. Тем самым, цвет получается более насыщенным.

Может кто-нибудь знает, как управлять данным полем(бит/пиксел)? жду вашей помощи...

Ниже в архиве находятся оба файла(исходный и результирующий), файл с кодом, а также файл со сравнением исходного и результирующего файлов.
Вложения
Тип файла: rar Forum.rar (52.8 Кб, 11 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 20:18     GDI+ неправильно сохраняется изображение
Посмотрите здесь:

GDI C++
C++ GDI в WinAPI
Проверьте задачку по циклам, неправильно работает. [думаю что неправильно] C++
C++ Освоение gdi+
Исходники GDI C++
GDI || DirectX C++
Анимация в GDI C++
C++ Литература по GDI+

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
klsaymon
38 / 38 / 8
Регистрация: 28.05.2011
Сообщений: 257
Записей в блоге: 1
29.11.2011, 23:57  [ТС]     GDI+ неправильно сохраняется изображение #2
ну неужели никто не работал с GDI+???
klsaymon
38 / 38 / 8
Регистрация: 28.05.2011
Сообщений: 257
Записей в блоге: 1
03.12.2011, 00:42  [ТС]     GDI+ неправильно сохраняется изображение #3
Уважаемые модераторы, перенесите, пожалуйста, тему в раздел "С++ для экспертов". Буду очень благодарен...
Yandex
Объявления
03.12.2011, 00:42     GDI+ неправильно сохраняется изображение
Ответ Создать тему
Опции темы

Текущее время: 03:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru