|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.11.2012, 17:12 | #1 |
Регистрация: 17.11.2012
Сообщений: 7
|
Работа с BMP -> JPEG
Здраствуйте, мне нужно написать конвертер изображений BMP -> JPEG на чистом Си, с использованием только стандартных функций (пишу на Pelles C). Вот в чём проблема:
1) Когда считываю BMP-файл, я вывожу все данные о файле на экран, но они немного криво показываются (например высота и ширина изображения), хотя я пользовался данными с википедии... 2) Я так понимаю чтобы мне перевести BMP в JPEG, нужно получить двумерный массив RGB значений (так мне сказали), для последующего перевода этих значений в JPEG. Значения RGB-палитры у меня есть, но я не знаю как правильно загнать их в двумерный массив. Мне подсказывали, что надо записывать как-то так: "когда получишь двухмерный массив из [R,G,B] значений, его надо будет просто закодировать в жпег. В шапке у тебя есть размеры рисунка Width х Height (Ширина х Высота, например 1024 х 768), есть одномерный массив array1d, ну а индексы по схеме. array2d[i/Width][i%Width] = array1d[i]", но всё сводится к тому, что программа криво выдаёт Ширину и Высоту изображения. Вообщем кто сможет чем-либо помочь - буду очень благодарен! Код:
|
18.11.2012, 11:37 | #2 |
Форумчанин
Регистрация: 05.04.2012
Сообщений: 134
|
Если проблемы возникают при загрузки битмапа, то что скажешь при написание кодера и декодера JPEG(sequential или progressive), можешь использовать библиотеку libjpeg.
|
18.11.2012, 12:10 | #3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Во первых, из за выравния (alingment), елементы структур могут не следовать одним за другим в памяти а во вторых сами переменные записаны в low endian а платформа на которох все это будет работать (вы не потрудились указать) может быть либо low endian либо big endian.
|
18.11.2012, 12:13 | #4 | ||
Регистрация: 17.11.2012
Сообщений: 7
|
Цитата:
Можете посмотреть что не так? И если не сложно, помогите считать правильно RGB значения в двумерный массив. Цитата:
Насчёт переменных, я читал на википедии но ничего про low endian и big endian не нашёл, можете тоже объяснить? Последний раз редактировалось Stilet; 18.11.2012 в 12:37. |
||
18.11.2012, 12:30 | #5 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
|
|
18.11.2012, 12:42 | #6 |
Регистрация: 17.11.2012
Сообщений: 7
|
А как сделать выравнивание?
Последний раз редактировалось MartyM; 18.11.2012 в 12:55. |
18.11.2012, 14:07 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос по OpenGL и *.bmp/*.jpeg файлам. | Vova777 | Мультимедиа в Delphi | 2 | 26.06.2011 09:31 |
Проблема с TImage, BMP, JPEG | Florento | Общие вопросы Delphi | 5 | 16.06.2011 16:18 |
Ищу компонент конвертер(Bmp, Png, Tif, Gif...) в Jpeg | ArtGrek | Компоненты Delphi | 16 | 25.05.2011 10:05 |
Как оптимизировать код перевода BMP в JPEG | artemavd | Общие вопросы Delphi | 7 | 12.11.2010 12:18 |
Узнать цвет пикселя в Timage, если там не bmp а jpeg? | TwiX | Общие вопросы Delphi | 4 | 27.09.2009 19:11 |