Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2013, 00:20   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

из заголовка вы можете узнать размеры картинок, и так же направление пикселей.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.07.2013, 00:37   #12
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

судя по прочитанному, заголовок не содержит направления пикселей. Картинка с фиксированным размером, в формате RGB24, больше мне ничего не нужно от файла.
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 24.07.2013, 02:55   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
biHeight
Высота изображения в пикселях. Если содержит положительное значение — изображение записано в порядке снизу-вверх (нулевой пиксель в нижнем левом углу). Если значение отрицательное — изображение записано сверху-вниз (нулевой пиксель в верхнем левом углу изображения). Поле biCompression должно содержать значение BI_RGB или BI_BITFIELDS. Такое изображение не может быть сжато.
так же формат пикселей учитываете?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.07.2013, 11:16   #14
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

А там разве не ДВА заголовка - BITMAPFILEHEADER и за ним BITMAPINFOHEADER?
Где тут 40 байт? Я насчитал все 50.

Далее, вы сказали, что пропускаете 39 байт, хотя как раз эту часть в коде не показали. Если размер заголовка 40 байт от надо делать seek(40)
waleri на форуме Ответить с цитированием
Старый 24.07.2013, 11:16   #15
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Похоже на переписку с самим собой
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 24.07.2013, 11:21   #16
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А там разве не ДВА заголовка - BITMAPFILEHEADER и за ним BITMAPINFOHEADER?
Где тут 40 байт? Я насчитал все 50.
Если размер заголовка 40 байт от надо делать seek(40)
Если точнее 54. Но это ничего не меняет, я двигал попиксельно оступ от начала к концу файла и наоборот, от отступа туда сюда, нифига не выравнивается, скачал из интернета картинку 255х255 пикселей размером, и она ровно на 255 пикселей больше чем надо и судя по всему в ширину а не высоту иначе было бы всё пучком наверное..
Цитата:
Далее, вы сказали, что пропускаете 39 байт, хотя как раз эту часть в коде не показали.
Смотрим внимательнее в функцию считывания на строчку содержащую fseek(fp, indent, SEEK_SET);
где indent переменная которая может содержать любое удобное мне значение.
do not use your brain

Последний раз редактировалось Кащей; 24.07.2013 в 11:39.
Кащей вне форума Ответить с цитированием
Старый 24.07.2013, 11:27   #17
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
так же формат пикселей учитываете?
Формат - снизу вверх справа на лево BGR 24 бита труколор BI_RGB блин!
do not use your brain

Последний раз редактировалось Кащей; 24.07.2013 в 11:57.
Кащей вне форума Ответить с цитированием
Старый 24.07.2013, 12:11   #18
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Есть требование, что ширина битмап картинки в байтах должна быть четной - это в памяти.
Похоже в файлах округляют ширину в пикселях иначе нельзя будет загрузить всю картинку целиком - надо будет читать строчку за строчкой и добавлять лишний байт после каждой строки.
Так что читайте заголовок и делите размер всей картинки на высоту картинки и будет ширина строки в байтах - в конце будут неиспользованные байты.

Так что сама конверсия у вас в порядке, а вот отрисовка похоже что нет.
waleri на форуме Ответить с цитированием
Старый 24.07.2013, 12:29   #19
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Окей, тема закрыта, спасибо waleri, после прочтения етих слов
Цитата:
а вот отрисовка похоже что нет
я понял, что единственное что я не пробовал изменить это параметры отрисовки, на всякий случай изменил размер картинки на чётный, изменил параметры отрисовки и получил то что хотел.
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 24.07.2013, 12:35   #20
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Так, вот оно, в английской версии статьи: http://en.wikipedia.org/wiki/BMP_file_format

Прямо сказано, что ширина картинки в байтах должна быть кратна 4 байтам.
255 * 3 == 765, следующее кратное 4 - 768. 768 * 255 == 195840 - знакомая цифра.
waleri на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RGB в CMYK и CMYK в RGB могут конвертироваться без потери качества? hon Мультимедиа в Delphi 5 19.08.2012 14:41
rgb(***,***,***) Fisherman86 Общие вопросы Delphi 3 31.03.2012 11:40
Смешивание двух RGBA цветов Dj_smart Мультимедиа в Delphi 7 01.03.2012 20:35
Палитра RGB Discovery Microsoft Office Excel 12 11.06.2011 12:04
RGB Flow Kepler Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 09.03.2011 00:58