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

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

Войти
Регистрация
Восстановить пароль
 
klsaymon
38 / 38 / 8
Регистрация: 28.05.2011
Сообщений: 257
Записей в блоге: 1
#1

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

27.11.2011, 20:18. Просмотров 670. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток!
Возникла проблема при сохранении 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++
Ребята, привет. Не знаю, с чего начать. Нужен примерчик использования интерфейса графического устройства. Что-нибудь нарисовать,...

GDI || DirectX - C++
Что лучше использовать в качестве меню для игр Win32 API + GUI или Win32 API + DirectX? Возможно ли в GUI\GUI+ сделать форму прозрачной?

Анимация в GDI - C++
Подскажите, пожалуйста, как анимировать фигуру в GDI, чтобы она при нажатии на пробел, поднималась на пару пикселей Заранее спасибо

Исходники GDI - C++
Может кто поделиться какими-нибудь исходниками связаными с использованием графики? А то не знаю как подступиться. В книжках есть куски...

Литература по GDI+ - C++
Поискал какую-нибудь литературу (желательно русскоязычную), но ничего не нашел, кроме обзорных статей и отдельных примеров. А есть ли в...

Освоение gdi+ - C++
Первый вопрос. Есть созданная скажем из файла картинка в виде указателя на создланный Gdiplus::Image Как ее вывести не исходной, а...

GDI, оттягивание прямоугольника - C++
Здравствуйте, вопрос такой. Выбрал я оси, нарисовал свой прямоугольник. Как мне реализовать штуку, чтобы мне можно было мой прямоугольник...

GDI отрисовка и очистка - C++
Доброго времени суток! Суть такова: Вывожу посредством GDI прямые на консольное окно. После завершения отрисовки мне нужно стереть...

Удаление объектов GDI - C++
Почему нужно удалять созданные (например так: hRgn = CreateRectRgn(0, 0, 0, 0); ) объекты GDI? ну то есть зачем их удалять явно?...

GDI+ или Direct2D? - C++
Всем привет! возможно звучит немного наивно, но хотелось бы узнать какую графическую технологию можно использовать, чтобы написать игру по...

GDI C++ вставить картинку - C++
Здравствуйте, друзья! Как говориться - просто так бы не беспокоил. К моему сожалению потратил достаточно много времени (три вечера),...

Как избавиться от мерцания в gdi? - C++
Как избавиться от мерцания в gdi? Пробовал делать двойную буфферизацию с помощью CreateCompatibleBitmap и BitBlt, но не рисовался даже...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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+ неправильно сохраняется изображение
Ответ Создать тему
Опции темы

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