Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм сжатия JPEG, Реализация алгоритма сжатия JPEG 
V
    Опции темы
rudolfninja
Дата 17.3.2015, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

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



Приветсвтую.
Нужно реализовать алгоритм сжатия JPEG. Сам еще не пробовал, искал в интеренете готовые решения, но не смог найти.
Может есть у кого-нибудь реализация этого алгоритма на каком-нибудь языке высокого уровня?
Или, на крайний случай, может есть какие известные сторонние библиотеки с реализацией данного алгоритма? Нужно иметь возможноть задавать коэффициент качества.
Заранее спасибо.
PM MAIL Skype   Вверх
ksnk
Дата 17.3.2015, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(rudolfninja @  17.3.2015,  11:13 Найти цитируемый пост)
искал в интеренете готовые решения, но не смог найти

Нужно повышать скилл  smile 

Тынц?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
rudolfninja
Дата 17.3.2015, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

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



Спасибо.
=) Видимо, да, нужно прокачать скилл =)
Просто тут очень много файлов и непонятно где смотреть сам алгоритм. Сейчас буду смотреть.

Может, все-таки, у кого нибудь есть более простая реализация?

Это сообщение отредактировал(а) rudolfninja - 17.3.2015, 11:45
PM MAIL Skype   Вверх
Alexeis
Дата 17.3.2015, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



  Совсем просто не выйдет. JPEG файл состоит из многих фрагментов. Их нужно уметь читать все иначе просто не добраться до сжатого битмапа. 
  Я бы использовать open source проект libjpeg . Ему уже сто лет в обед. Написан на С. Переносить логику на язык более высокого уровня не логично с точки зрения производительности и переносимости. Формат JPEG был разработан из расчета что файл может эффективно создаваться даже на 16ти битном процессоре.

Но думаю, что эта ссылка вам больше поможет чем стандарт.
http://www.mediascan.by/index.files/jpeg-ref.pdf


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
rudolfninja
Дата 17.3.2015, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

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



Alexeis, спасибо. pdf эту видел.
По поводу библиотеки, может есть пример как с ее помощью bmp перегнать в jpeg с заданным коэффициентом качества?
PM MAIL Skype   Вверх
Alexeis
Дата 17.3.2015, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Все зависит от того, каким компилятором владеете.
Для меня самым простым способом был бы такой http://delphiworld.narod.ru/base/jpeg_work.html
Delphi компилятор использует ту же библиотеку libjpeg, просто С файлы скомпилированы C++ Builder ом в obj, а obj файлы собираются уже компилятором делфи. Ну и плюс обертка объектная вокруг всего этого добра.
  Кто владеет QT наверняка предложит вам не менее простой способ ее использования. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ksnk
Дата 17.3.2015, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



rudolfninja, А что делать -то надо? Я что-то задумался, а зачем нормальному человеку могут понадобится исходники jpeg? В любой системе программирования работе с картинками выделен свой солидный кусок. Для решения любой прикладной задачи стандартных возможностей вполне может хватить, imho.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
rudolfninja
Дата 18.3.2015, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

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



ksnk, вообще задумка такова, что с помощью различных алгоритмов стеганографии я прячу в bmp сообщение, затем сжимаю картинку в jpeg с различными коэффициентами качества, достаю из полученной jpeg закодированное сообщение и побитово сравниваю его с оригиналом.
То есть мне не надо исходники, мне надо нетяжелая(имеется в виду, не большая по объему) библиотека, которая сожмет bmp в jpeg с определенным коэффициентом качества. Ну и желательно, чтоб библиотека была компиляторонезависимой.
PM MAIL Skype   Вверх
Alexeis
Дата 18.3.2015, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(rudolfninja @  18.3.2015,  10:51 Найти цитируемый пост)
То есть мне не надо исходники, мне надо нетяжелая(имеется в виду, не большая по объему) библиотека, которая сожмет bmp в jpeg с определенным коэффициентом качества

  Тогда качаем сам libjpeg http://sourceforge.net/projects/libjpeg/files/libjpeg/6b/
Распаковываем в папку. Находим jconfig.vc (для Visual Studio) переименовываем в jconfig.h
  открываем командную строку переходим в командной строке сначала в
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin 
Ну или в папку той версии что есть у вас. Запускаем vcvars32.bat - он установит правильно переменные окружения. Теперь в командной строке переходим на диск куда распаковали libjpeg и пишем строчку
nmake /f makefile.vc 
  Через пару секунд получите файл статической библиотеки libjpeg.lib 
  Пример кодирования, декодирования есть там же в example.c . 
Зависимостей никаких подключили либу и пользуемся.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
rudolfninja
Дата 18.3.2015, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

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



Самому собрать либу не получилось, вылетала ошибка NMAKE: fatal error U1073: don't know how to make 'jcapimin.c'
Скачал либу с нета. Подключил ее к проекту через свойства Property-Linker-Input-Additional Dependencies.
Но получается, что мне сейчас надо скопировать .h файлы, чтоб я мог использовать функции и типы, объявленные в либке?
PM MAIL Skype   Вверх
Alexeis
Дата 18.3.2015, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(rudolfninja @  18.3.2015,  16:51 Найти цитируемый пост)
Но получается, что мне сейчас надо скопировать .h файлы, чтоб я мог использовать функции и типы, объявленные в либке? 

Я бы скопировал сначала jpeglib.h, а затем если он что-то еще будет искать докладывал по мере запросов. Скорее всего нужно будет два три хидера типа jconfig.h, jmorecfg.h, jerror.h . Вряд ли все.

На счет компиляции странно что не сработало, может что-то с переменными окружения? Файл vcvars32.bat запускали из той же командной строки или просто двойным кликом? По идее vcvars32.bat конфигурирует переменные окружения только для текущего приложения (cmd.exe).

Добавлено через 4 минуты и 48 секунд
Еще попробуйте запустить командную строку самой среды
Пуск -> Все программы -> Visual Studio 2005 -> Visual Studio tools -> Visual Studio 2005 command Prompt
и в ней исполнить vcvars32.bat 



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
rudolfninja
Дата 18.3.2015, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

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



Пробовал, не получилось. Такая же ошибка валится.
А с той статической либой что я скачал валятся unresolved external symbol на функции из либы.

Запускаю Сommand Prompt, пишу там 
C:\>"Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
В командную строку выводится следующее:
\Microsoft was unexpected at this time.
Ради интереса, попробуйте, пожалуйста, у себя собрать

Получилось!

Это сообщение отредактировал(а) rudolfninja - 18.3.2015, 18:10
PM MAIL Skype   Вверх
Alexeis
Дата 18.3.2015, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(rudolfninja @  18.3.2015,  18:12 Найти цитируемый пост)
Ради интереса, попробуйте, пожалуйста, у себя собрать

Получилось!

  Так я ж так и сделал. Сначала собрал, потом написал. Просто я собирал на 2005й, возможно по сравнению с 2012й есть еще особенности. 

unresolved external symbol могут быть как раз из-за того что либа скомпилирована была в другой среде. В этом случае лучше уж Dll использовать (если чужую брать). Когда компилишь сам, можешь указать нужный вариант CRT Debug/Release/MultiThread/SingleThread . 
  
  А что именно получилось? Собрать или подключить? Или и то и другое?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
rudolfninja
Дата 18.3.2015, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

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



Уже и собрал и подключил и даже сжал свою bmp в несколько jpg с различными коэффициентами качества =)  smile 
Вообще, если судить по содержанию темы, ее названию и разделу, в котором она создана, то получился сплошной оффтоп =)

Alexeisksnk, спасибо вам большое! Кинул бы каждому по плюсику в карму, но не хватает количества постов.
Перевожу тему в решенное состояние.

Это сообщение отредактировал(а) rudolfninja - 18.3.2015, 18:58
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




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


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

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