![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
Mr_Nuke |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 6.4.2007 Репутация: нет Всего: нет |
Всем привет! Пишу прогу, нужно прочитать изображение, а потом его образно записать.
Код получился таким:
Проблема в том, что полученное изображение получается меньше исходного. В редакторе открывается, но не дорисовывается небольшая часть изображения. Если в коде, при выделении памяти и чтении, умножать не на 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 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 6.4.2007 Репутация: нет Всего: нет |
Проблему нашел! Забыл закрыть поток, откуда пишу!!
Решено! Закрываем ![]() |
|||
|
||||
Mr_Nuke |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 6.4.2007 Репутация: нет Всего: нет |
Рано радовался, это оказалось только верхушкой айсберга!!
Вычитал такую фразу
Делаем как в примере, есть изображение 2х3 пикселя, 24 бита на канал. Ширина строки получается 24*3 = 72 (9 байт). Добавляем 3 байта для кратности 4, в каждую строку, итого нужно добавить 6 байт. Опытным путем установил, что размер полученного изображения все-равно получается меньше, а добавлять надо не 6, а 8 байт, то есть по 4 на строку. Почему? И как тогда рассчитать количество добавляемых байт в строке.
Это сообщение отредактировал(а) Mr_Nuke - 13.6.2012, 15:53 |
||||
|
|||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
Mr_Nuke, посмотри мой пример работы с растровыми изображениями: http://code.google.com/p/graphicsdemo-open/source/checkout
В функции GetImagePixels разбор заголовка и учет выравнивания строк -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |