Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Bmp to Jpg, Интересует пример алгоритма 
:(
    Опции темы
Zigrund
  Дата 21.3.2011, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Здравтсвуйте. 
Стоит предо мною задача написать алгоритм конвертации bmp в jpg.
Конечно без использования готовых средств билдера.
Теории нашёл много, но чем больше изучаю, тем больше вопросов:
http://algolist.manual.ru/compress/image/jpeg.php
http://program.rin.ru/razdel/html/943.html
http://keygene.narod.ru/1.htm#sch2

Не могли бы вы поделиться примером кода.
Буду рад любой помощи.
Спасибо.
PM MAIL   Вверх
boostcoder
Дата 21.3.2011, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



вот тебе самая стандартная реализация: http://ijg.org/
изучай ;)
PM WWW   Вверх
Zigrund
Дата 21.3.2011, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Цитата(boostcoder @ 21.3.2011,  11:18)
вот тебе самая стандартная реализация: http://ijg.org/
изучай ;)

Эту ссулочку я уже видел.
А вы не могли бы мне помочь разобраться, с чего там начинать.
Я скачал архив jpegsr8c.zip. 
Там так много файлов, что чёрт ногу сломит.
PM MAIL   Вверх
boostcoder
Дата 21.3.2011, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



с example.c
PM WWW   Вверх
Zigrund
Дата 21.3.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Цитата(boostcoder @ 21.3.2011,  11:36)
с example.c

А в этом коде никаких специфичных библиотек билдера не используется!?
Тоесть я , как только разберусь смогу её свободно перенести на другой си копилятор, например для контроллера.
PM MAIL   Вверх
Zigrund
Дата 21.3.2011, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



А как Вы считаете?
Самому можно написать используя ту теорию, которую я привёл и чтобы потом любой стандартной программкой мой джепг открылся?
Или там не вся теория?

Допустим я не понял, как тут RES получается. TMP у меня такойже получается, но дальше по ихней формуле такой RES никогда не получится.
Что я упустил?

например, нам нужно сжать следующий фрагмент изображения:


      | 95  88  88  87  95  88  95  95|
      |143 144 151 151 153 170 183 181|
      |153 151 162 166 162 151 126 117|
IMG = |143 144 133 130 143 153 159 175|
      |123 112 116 130 143 147 162 189|
      |133 151 162 166 170 188 166 128|
      |160 168 166 159 135 101  93  98|
      |154 155 153 144 126 106 118 133|
      |-33 -40 -40 -41 -33 -40 -33 -33|
      | 15  16  23  23  25  42  55  53|
      | 25  23  34  38  34  23  -2 -11|
IMG = | 15  16   5   2  15  25  31  47|
      | -5 -16 -12   2  15  19  34  61|
      |  5  23  34  38  42  60  38   0|
      | 32  40  38  31   7 -27 -35 -30|
      | 26  27  25  16  -2 -22 -10   5|




Вот формула, по которой производится ДКП: RES*IMG*DCTT


Для начала нужно посчитать промежуточную матрицу: TMP = IMG*DCTT


      |-103   -3    1    2    4    0   -1    5|
      |  89  -40   12   -2   -7    5    1    0|
      |  57   31  -30    6    2    0    5    0|
TMP = |  55  -28   24    1    0   -8    0    0|
      |  32  -60   18   -1   14    0   -8    1|
      |  84  -11  -37   17  -24    4    0   -4|
      |  19   81  -16  -20    8   -3    4    0|
      |  22   40   11  -22    8    0   -3    2|




Затем умножаем ее на ДКП матрицу: RES = TMP*DCT


      | 91   3  -5  -6   2   0   1|
      |-38 -57   9  17  -2   2   2|
      |-80  58   0 -18   4   3   4|
RES = |-52 -36 -11  13  -9   3   0|
      |-86 -40  44  -7  17  -6   4|
      |-62  64 -13  -1   3  -8   0|
      |-16  14 -35  17 -11   2  -1|
      |-53  32  -9  -8  22   0   2|

Это сообщение отредактировал(а) Zigrund - 21.3.2011, 12:16
PM MAIL   Вверх
boostcoder
Дата 21.3.2011, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Zigrund @  21.3.2011,  11:42 Найти цитируемый пост)
А в этом коде никаких специфичных библиотек билдера не используется!?

нет.

Цитата(Zigrund @  21.3.2011,  11:42 Найти цитируемый пост)
Тоесть я , как только разберусь смогу её свободно перенести на другой си копилятор

да.

Цитата(Zigrund @  21.3.2011,  11:42 Найти цитируемый пост)
например для контроллера. 

возможно.

PM WWW   Вверх
Zigrund
Дата 21.3.2011, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Цитата(boostcoder @ 21.3.2011,  12:32)
Цитата(Zigrund @  21.3.2011,  11:42 Найти цитируемый пост)
А в этом коде никаких специфичных библиотек билдера не используется!?

нет.

Цитата(Zigrund @  21.3.2011,  11:42 Найти цитируемый пост)
Тоесть я , как только разберусь смогу её свободно перенести на другой си копилятор

да.

Цитата(Zigrund @  21.3.2011,  11:42 Найти цитируемый пост)
например для контроллера. 

возможно.

Как, я понял, Вы уже работали с этим кодом!?
Я добавил в проект файл example и три H файла, один из которых jconfig.h скопировал из блокнота.

И никакх ошибок не возникло. Это нормально?

PM MAIL   Вверх
boostcoder
Дата 21.3.2011, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Zigrund @  21.3.2011,  12:45 Найти цитируемый пост)
Как, я понял, Вы уже работали с этим кодом!?

да.

Цитата(Zigrund @  21.3.2011,  12:45 Найти цитируемый пост)
Это нормально?

из столь сумбурного описания проделанного, сложно что-то сказать определенно.
обычно, эту библиотеку нужно собирать. инструкция в install.txt
PM WWW   Вверх
Zigrund
Дата 21.3.2011, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Там есть клёвая функция 
GLOBAL(void) write_JPEG_file (char * filename, int quality)
Всё замечательно, но только прежде чем записать файл, надо какой-то файл открыть. 
Я надеялся на то, что билдер сругнётся, что нет каких-то функций, а он предательски молчит.
И у меня возник вопрос, а в како файле искать функцию типа openBMP?

Добавлено через 2 минуты и 23 секунды
Цитата(boostcoder @ 21.3.2011,  12:51)
Цитата(Zigrund @  21.3.2011,  12:45 Найти цитируемый пост)
Как, я понял, Вы уже работали с этим кодом!?

да.

Цитата(Zigrund @  21.3.2011,  12:45 Найти цитируемый пост)
Это нормально?

из столь сумбурного описания проделанного, сложно что-то сказать определенно.
обычно, эту библиотеку нужно собирать. инструкция в install.txt

Спасибо. 
Сейчас почитаем файлик.
PM MAIL   Вверх
boostcoder
Дата 21.3.2011, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Zigrund @  21.3.2011,  12:52 Найти цитируемый пост)
И у меня возник вопрос, а в како файле искать функцию типа openBMP? 

пример использования интерфейса компрессора описан в cjpeg.c
декомпрессора, в djpeg.c

PM WWW   Вверх
Zigrund
Дата 21.3.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Цитата(boostcoder @ 21.3.2011,  13:02)
Цитата(Zigrund @  21.3.2011,  12:52 Найти цитируемый пост)
И у меня возник вопрос, а в како файле искать функцию типа openBMP? 

пример использования интерфейса компрессора описан в cjpeg.c
декомпрессора, в djpeg.c

А вы на билдере подключали этот код?
А я что-то не понял, при чём тут командная строка?
Работа с ней описывается в файле cjpeg.c.
PM MAIL   Вверх
boostcoder
Дата 21.3.2011, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Zigrund @  21.3.2011,  13:15 Найти цитируемый пост)
А вы на билдере подключали этот код?

нет.

Цитата(Zigrund @  21.3.2011,  13:15 Найти цитируемый пост)
А я что-то не понял, при чём тут командная строка?

при том, что это пример. смотри исходник.
PM WWW   Вверх
Zigrund
Дата 21.3.2011, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Цитата(boostcoder @ 21.3.2011,  13:24)
Цитата(Zigrund @  21.3.2011,  13:15 Найти цитируемый пост)
А вы на билдере подключали этот код?

нет.

Цитата(Zigrund @  21.3.2011,  13:15 Найти цитируемый пост)
А я что-то не понял, при чём тут командная строка?

при том, что это пример. смотри исходник.

А Вы бы не могли кратенько меня проинструктировать, что тут мне надо и в какой последовательности, чтобы просто взять bmp файл и его сжать в jpg.
Конечно, чтобы этот джепег потом открылся, тоесть правильно сжался)))
Буду очень вам презнателен. 

А Вы сами алгоритм сжатия в jpeg не писали?
PM MAIL   Вверх
boostcoder
Дата 21.3.2011, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Zigrund @  21.3.2011,  13:28 Найти цитируемый пост)
А Вы бы не могли кратенько меня проинструктировать, что тут мне надо и в какой последовательности, чтобы просто взять bmp файл и его сжать в jpg.
Конечно, чтобы этот джепег потом открылся, тоесть правильно сжался)))
Буду очень вам презнателен. 

зачем? пример был написан именно для таких случаев ;)

Цитата(Zigrund @  21.3.2011,  13:28 Найти цитируемый пост)
А Вы сами алгоритм сжатия в jpeg не писали? 

нет) да и не за чем.
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.