Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Работа с изображением |
Автор: Mr_Nuke 12.6.2012, 20:05 | ||
Всем привет! Пишу прогу, нужно прочитать изображение, а потом его образно записать. Код получился таким:
Проблема в том, что полученное изображение получается меньше исходного. В редакторе открывается, но не дорисовывается небольшая часть изображения. Если в коде, при выделении памяти и чтении, умножать не на 3, а на 4, полученное изображение больше исходного, но в редакторе открывается без искажений. А на 3 умножаю т.к. biBitCount = 24 (Every three bytes in the bitmap’s data field represent the relative intensities of blue, green and red for (BGR) every pixel.) |
Автор: Mr_Nuke 12.6.2012, 23:59 |
Проблему нашел! Забыл закрыть поток, откуда пишу!! Решено! Закрываем ![]() |
Автор: Mr_Nuke 13.6.2012, 15:53 | ||||
Рано радовался, это оказалось только верхушкой айсберга!! Вычитал такую фразу
Делаем как в примере, есть изображение 2х3 пикселя, 24 бита на канал. Ширина строки получается 24*3 = 72 (9 байт). Добавляем 3 байта для кратности 4, в каждую строку, итого нужно добавить 6 байт. Опытным путем установил, что размер полученного изображения все-равно получается меньше, а добавлять надо не 6, а 8 байт, то есть по 4 на строку. Почему? И как тогда рассчитать количество добавляемых байт в строке.
|
Автор: BorisVorontsov 18.6.2012, 13:30 |
Mr_Nuke, посмотри мой пример работы с растровыми изображениями: http://code.google.com/p/graphicsdemo-open/source/checkout В функции GetImagePixels разбор заголовка и учет выравнивания строк |