2 / 2 / 2
Регистрация: 31.07.2011
Сообщений: 143
|
||||||||||||||||
1 | ||||||||||||||||
bmp (24 битный)10.11.2011, 20:03. Показов 10746. Ответов 15
Метки нет (Все метки)
Ребят всем привет я бы выложил тут код,ну на самом деле с моей точки зрения это не к чему.Встала задача открыть 24 битный bmp файл и перекрасить в др.цвет.С заголовками всё понятно.Но возникает вопрос, когда дело доходит до графических данных.Как я понимаю палитра тут отсутсвует,а цвет каждого пикселя задаётся 4 байтами (4 байт=0).Так вот создаю в paint bmp 1*1 (рисунок конечно же больше это для опыта)всё тут нормально,создаю рисунок, например, 1*3 и по идеи после структуры
правильно ли я понимаю,что граф.данные должны располагаться следующим образом при размере 1*3
Добавлено через 59 секунд НО в действительности это не так? Добавлено через 11 минут Ребят вообщем разобрался со всем,но осталось 2 вопроса: 1)Если я использую rgb для описание цветов пикселей в каждом 24 битном рисунке,то у меня ведь все равно под описание кажого пикселя должно отводиться 4 байт,последний 0,но у меня почему-то только 3,почему? 2)Ширина должна быть кратна 4 в противном случае ширина увеличивается до кратности 4,но как система узнает ,что пиксель с левыми параметрами,не надо отображать и что это вообще не пиксель а мусор? Добавлено через 3 минуты Ответ на 2 вопрос найден,вы только ответь если знаете,на этот вопрос
0
|
10.11.2011, 20:03 | |
Ответы с готовыми решениями:
15
Работа с BMP-файлами (класс "8 битное BMP изображение) 64 битный int Компиляция в 16-битный код Компиляция под 32 битный процессор |
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
10.11.2011, 20:08 | 2 |
24 бита делим на 8, получаем 3 байта. Откуда должен взяться 4-й? Альфа-канал что ли?
0
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
10.11.2011, 20:20 | 4 |
Может, я что-то путаю, но на хранение прозрачности (именно ее обозвала альфа-каналом) надо еще 8 бит, и таким образом на пиксель будет приходится 32 бита, т.е. это уже не 24-битное изображение
1
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
10.11.2011, 20:31 | 6 |
Тремя. Иначе он был бы 32-х битным. А вот упакованы ли тройки подряд, или между ними есть незначащие четвёртые байты, я тебе не скажу.
Добавлено через 6 минут Глубина цвета - это вообще количество бит для кодирования цвета.
1
|
2 / 2 / 2
Регистрация: 31.07.2011
Сообщений: 143
|
||||||
10.11.2011, 20:53 [ТС] | 8 | |||||
Так и быть скину код,вижу без этого не как.Ребят гляньте и наведите на мысль но не более)
Да ребят попытался открыть 8 битный файл и оказывается он гораздо больше 24 битного.Это нормально? Добавлено через 6 минут Как создать в windows 40 битный bmp
0
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
10.11.2011, 20:54 | 9 |
Кажется, в 8-битном явно хранится таблица цветов (палитра). Наверное, он поэтому больше
Разве такой есть? Вроде после 32-битного сразу идет 48-битный
0
|
2 / 2 / 2
Регистрация: 31.07.2011
Сообщений: 143
|
|
10.11.2011, 21:18 [ТС] | 10 |
а с кодом строки что в ручную выравнивать,он автоматом туда мусор разве не пишет?
Добавлено через 15 минут ну неужели этого никто не знает?
0
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
||||||
11.11.2011, 03:27 | 11 | |||||
Вот код, который красит картинку целиком в заданный пользователем цвет
Нули дописываются вручную
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
11.11.2011, 12:03 | 12 |
Палитра весит 24 бита на цвет. Раз файл 8-ми битный, значит цветов 256. Итого 6 144 бит. А рисунок весит 8 бит на пиксель, даже если он 256*256, это уже 65 536 пискселей, итого 524 288 бит. Разница 85-ти кратная. А в 24-х битном файле, хоть и нет палитры, зато сам рисунок весит в три раза больше, при том же размере 256*256 он будет уже 1 572 864 бит. Сколько весят заголовок палитры и поле для него в заголовке файла? Даже если в сумме 64 байта, то это всего 512 бит, вместе с самой палитрой будет 6 208. Это всё равно в 84 раза меньше самого рисунка, даже 8-ми битного.
Добавлено через 3 минуты Не вижу парадокса. Добавлено через 5 часов 4 минуты bmp? С другими форматами не путаешь?
0
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
11.11.2011, 15:00 | 13 |
taras atavin, не знаю) прочитала об этом на вики. там написано:
"Глубина цвета в данном формате может быть 1, 2, 4, 8, 16, 24, 32, 48 бит на пиксел, максимальные размеры изображения 65535×65535 пикселов. Однако, глубина 2 бит официально не поддерживается." И там же "Палитра может содержать последовательность четырёхбайтовых полей по числу доступных цветов (256 для 8-битного изображения). Три младшие байта каждого поля определяют интенсивность красной, зелёной и синей компоненты цвета, старший байт не используется. Каждый пиксел изображения описан в таком случае одним байтом, содержащим номер поля палитры, в котором сохранен цвет этого пиксела." Т.е., как я поняла, даже если у тебя в 8-мибитном рисунке всего три пиксела и один цвет, то палитра записывается целиком. Могу ошибаться. Проверила в paint. Файл из 6 пикселей 24-битный имеет размер 78 байт. Файл 8-битный из тех же 6 пикселей имеет размер 1Кб
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
11.11.2011, 15:06 | 14 |
Даже так добавляется всего 256 байт.
Я это тоже читал. Только я ни в одной софтине не видел 48-ми битных bmp. Добавлено через 59 секунд Конечно целиком. Только что это нафиг за рисунок в 3 пиксела?
0
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
11.11.2011, 15:18 | 15 |
taras atavin, в палитре на каждый цвет используется 4 байта, на 256 цветов - 1024 байта.
Рисунок в 3 пиксела был взят ТС, видимо, для проверки его программы, он где-то про это упоминал. Вот я и написала про 3 пиксела. Я свою тоже проверяла на маленьком рисунке, потому что проверять в пошаговой отладке рисунок 200х200 точек я б не осилила
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
11.11.2011, 15:33 | 16 |
А ты не путай проверку с назначением. Ты ещё txtшник с одним единственным символом раром сдави в самораспак, долго потом будешь удивляться, что он увеличился.
0
|
11.11.2011, 15:33 | |
11.11.2011, 15:33 | |
Помогаю со студенческими работами здесь
16
Как загрузить 24-битный bitmap? 64-х битный свободный компилятор под windows Соединение двух 32 битных блоков в 64 битный и обратно Можно ли для винды компилить 64-х битный натив? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |