- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
//bytes 0-13
bmp.push_back('B'); bmp.push_back('M'); //0: bfType
bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); //2: bfSize; size not yet known for now, filled in later.
bmp.push_back(0); bmp.push_back(0); //6: bfReserved1
bmp.push_back(0); bmp.push_back(0); //8: bfReserved2
bmp.push_back(54 % 256); bmp.push_back(54 / 256); bmp.push_back(0); bmp.push_back(0); //10: bfOffBits (54 header bytes)
//bytes 14-53
bmp.push_back(40); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); //14: biSize
bmp.push_back(width % 256); bmp.push_back(width / 256); bmp.push_back(0); bmp.push_back(0); //18: biWidth
bmp.push_back(height % 256); bmp.push_back(height / 256); bmp.push_back(0); bmp.push_back(0); //22: biHeight
bmp.push_back(1); bmp.push_back(0); //26: biPlanes
bmp.push_back(outputChannels * 8); bmp.push_back(0); //28: biBitCount
bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); //30: biCompression
bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); //34: biSizeImage
bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); //38: biXPelsPerMeter
bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); //42: biYPelsPerMeter
bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); //46: biClrUsed
bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); //50: biClrImportant
Наркоманы скорее. Байтоёбики, да и все остальные, сразу массив заполнят.
Все остальные поюзают какой-нибудь libpng. Кому нужны эти BMP в 2014?
Отчасти непонятно почему не расцвели lossy-only форматы из новых видеокодеков, использующиеся в режиме image (по сути видео из 1-го кадра) тот же x264, который жмёт раза в 2 лучше чем jpeg.
Пытались-пытались делали вейвлетный JPEG-2000, который на поверку оказался кокашкой, ms сделала jpeg-hr, а гляди и поныне бал правит убогий формат 25 летней давности.
> убогий формат 25 летней давности
Безобразно, зато единообразно.
jpeg2000 вроде бы загнулся именно из-за этого, а не из-за технических проблем.
Это означает при одинаковом визуальном восприятии.
>jpeg2000 вроде бы загнулся именно из-за этого
Загнулся из-за патентов блядских на вейвлеты. И в принципе он был не так уж и хорош.
И как раз из ПНГ богоугодного конвертится, дорогуша.
P.S. Код из топика справится с рисунком ширины 17 или, к примеру, 31?
Канеша, за границами браузерного дроча с цсс и яваскриптиком и прочего асп. нета с жабастой хуетой.
В байты рано или поздно придётся писать.
В предположении, что бмп-либы у нас нет, и нормального бинарного энкодера тоже, типичный quick-and-dirty хак.
а код темы- уебанство и реальное говно
В заголовке BMP big-endian что-ли?
Для передачи потокового видео. Угу.
гораздно смешнее что Тарас на сях пишет а не на паскале
P.S. Если твой BMP-кодек с первого раза правильно запишет 24-битную картинку с шириной, не кратной 4 - ты очень внимательный и аккуратный программист.
Вот вам плюс, батенька. Бесполезнейшая трата времени.
Ну в своё время выводить 16 цветную BMP'шку в борманд паскале было интересно (и, наверное, полезно)... С JPEG'ом тоже было очень интересно повозиться - все эти дискретные косинусные преобразования, квантование, хаффмановское кодирование... Покопаться в форматах - это интересно и полезно.
Но писать кривожопый велосипед, когда космические корабли бороздят просторы большого театра полно готовых отлаженных либ - это уже моветон.
Ну, кроме студента, который изучает для себя чудесный мир байтов.
Для популярного в прошлом веке формата картинок.
fxd.
Лучше уж сразу .pcx. И alchemy в помощь.
Как тут не начать писать велосипед?
Ну вот такая предметная облость, битмап всигда по ширине кратен 4.
про ендианнес уже ответили. Ну и никто не запрещает однобайтовые поля использовать.
В шиндовз.аш? :)
Простенький кодек с putByte, putInt и т.п. можно наговнякать минут за 10... Всё лучше, чем байты по одному укладывать.
Страдания маленького Ст Вертера.