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

Проблема с масштабированием BMP - C++

Войти
Регистрация
Восстановить пароль
 
Doomych
0 / 0 / 0
Регистрация: 10.12.2007
Сообщений: 98
31.01.2008, 08:26     Проблема с масштабированием BMP #1
Проблема в следующем: вывожу в клиентское окно BMP-картинку (Truecolor, 24 bit, размер - 1024х960), которую читаю с диска. При этом картинка масштабируется:
C++
1
2
3
4
5
6
void CXxxView::OnDraw(CDC* pDC)
{
    ...
    pDC->StretchBlt(250, 20, 1024 / 2, 960 / 2, & dcTemp, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
    ...
}
Происходит следующее: если картинка выводится в масштабе, близком к 1:1, все OK. Но при заметном ее уменьшении качество изображения ухудшается. При масштабе 1:2 это уже явно не Truecolor, а цветов так восемь, причем изображение темнеет. Дальше - хуже: 1:16 - почти одна чернота.
Объясните, в чем причина и как с этим бороться!

Спасибо всем, кто ответит!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2008, 08:26     Проблема с масштабированием BMP
Посмотрите здесь:

C++ Работа с BMP файлом.
C++ bmp (24 битный)
C++ [C++] 24-битные BMP
C++ Скриншот, работа с bmp
C++ BMP - файл
C++ bmp в C++
Считывание bmp C++
C++ Открытие .bmp
C++ bmp 8
Стеганография в BMP C++
Запись bitset в bmp C++
Чтение BMP 24 C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
31.01.2008, 15:31     Проблема с масштабированием BMP #2
Я думаю проблема в алгоритме масштабирования, а точнее его отсутствии, простейшая процедура масштабирования не предполагала работу с высококачественными фотографиями.... и, мне кажеться, просто выбирает каждую 16-ю точку картинки для масштабирования 1/16, что коне чтно же никак не подходит.
Советую поискать подходящий алгоритм и воспользоваться им перед выводом картинки на экран, который бы находил среднее значение цвета на протяжении 16 точек и брал среднее значение, также зависящее от окруджающих регионов.

Удачи, Владимир
Doomych
0 / 0 / 0
Регистрация: 10.12.2007
Сообщений: 98
03.02.2008, 10:10  [ТС]     Проблема с масштабированием BMP #3
На выходных во всем разобрался: все оказалось проще: ранее, в строке
C++
1
HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), m_sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
все портил стиль LR_CREATEDIBSECTION.

Но все равно, спасибо за помощь!
Yandex
Объявления
03.02.2008, 10:10     Проблема с масштабированием BMP
Ответ Создать тему
Опции темы

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