Доброго времени суток! Есть файл в формате *.JPG, его нужно раскодировать(расжать) по точкам. Затем эти точки нужно математически вывести в DIB-секцию, при этом не использовать API-функции Windows. То есть нужно расчитать. Получается, что как-бы мы получаем на выходе .BMP файл, снимая компрессию. В моей программе на masm32 есть свой формат представления графических файлов, с форматом *.BMP я разобрался, я его по точкам расчитываю и делаю дальше уже, что угодно, то же самое нужно и с *.JPG. Для того, чтобы преобразовать формат *.JPG в мой формат, мне нужно знать, как этот *.JPG устроен, то есть его алгоритм. Помогите пожалуйста, в интернете найти не смог!
djande Посмотри как это сделано в колибре. Или библиотеке от интел FastJpeg. Или в любом другом проекте с открытыми исходными кодами. Описание формата файла есть на www.w3.org и еще где-то попадалось. Вообще полно. А да как это не найти в интернете это надо умудриться. А да формат jpeg достаточно громоздкий чтобы его не разбирать самому, лучше взять готовую библиотеку.
Rustem, это статья носит только ознакомительный характер, таких много в инете. Никакого серьезного декодера по ним написать не получиться.
S_Alex Оно устарело и поддерживает далеко не всё - например, в принципе нет обработки progressive-изображений. Актуальный декодер - http://kolibrios.org/repos/programs/develop/libraries/libs-dev/libimg/jpeg/jpeg.asm .
diamond, а как его использовать на примере, а то там много функций, я не понял какую именно вызывать.
djande Там всего две пригодных для вызова извне функции, img.is.jpg (stdcall с двумя аргументами, указатель на данные и длина данных), определяющая, похожи ли данные на jpeg-изображение, и img.decode.jpg (stdcall с тремя аргументами, указатель на данные, длина данных, третий используется в других декодерах и игнорируется jpeg). Другой вопрос, что это только сам декодер, являющийся частью библиотеки (сама библиотека, соответственно, располагается выше по дереву - http://kolibrios.org/repos/programs/develop/libraries/libs-dev/libimg/), так что отдельно "как есть" jpeg.asm вообще не скомпилируется. Пример использования всей библиотеки есть в параллельной ветке дерева исходников - http://kolibrios.org/repos/programs/develop/libraries/libs-dev/.test/002/test002.asm.
Booster, ну хорошо, а где можно скачать готовую библиотеку? А Вы случайно не знаете, нет ли программ по переводу программ из Visual Basic 6 в MASM32?
Наиболее внятное объяснение как работает JPEG можно получить, изучив очень замечательное пособие от Дж. Миано: "Форматы И Алгоритмы Сжатия Изображений В Действии" http://community.livejournal.com/fotobooks/285330.html. В свое время страдал над декодированием JPEG'a, что то даже получалось. Но, это так, для общего образования. А если для дела, то это Вам надо сходить сюды: http://www.ijg.org/ там есть готовая к употреблению либина.