Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Быстрое пережатие изображений


Автор: Alex13 20.3.2010, 13:09
Добрый день!
Задача встала следующая. Я работаю над сжимающим прокси сервером и помоми компрессии страниц хочу еще реализовать ужатие изображений за счет понижения качества. Собственно встал вопрос, с помощью чего это сделать, чтобы это требовало минимум ресурсов. Поначалу думал в сторону imagemagick, но уж больно избыточен он для таких целей.
Все, что мне требуется - это уметь понижать качество для gif, jpeg и png, поскольку они наиболее распространенные.

Посоветуете какую-нибудь подходящую библиотеку?

Автор: nickless 21.3.2010, 18:50
Возможно будет достаточно специализированых библиотек libgif, libjpeg и libpng.

Автор: xvr 22.3.2010, 15:23
gif и png это форматы файлов с компрессией без потери качества, так что в них понижать нечего  smile 
jpeg можно перепаковать

Автор: nickless 24.3.2010, 03:29
Цитата(xvr @  22.3.2010,  14:23 Найти цитируемый пост)
компрессией без потери качества, так что в них понижать нечего

Потерь не было, но можно добавить, уменьшить количество цветов например, png можно еще сгладить, оно тогда сожмётся лучше.

Автор: xvr 24.3.2010, 09:35
Цитата(nickless @ 24.3.2010,  03:29)
Цитата(xvr @  22.3.2010,  14:23 Найти цитируемый пост)
компрессией без потери качества, так что в них понижать нечего

Потерь не было, но можно добавить, уменьшить количество цветов например, png можно еще сгладить, оно тогда сожмётся лучше.

Можно, но для этого потребуются уже другие библиотеки (обработки изображений). Еще можно gif и png разжать и перепаковать в jpeg. Тогда других библиотек не понадобится  smile 

Автор: Alex13 4.4.2010, 12:06
Спасибо за ответы.
Менять формат картинок все-таки считаю не очень разумным, мало ли как это повлияет на отображение.

Цитата(nickless @  24.3.2010,  07:29 Найти цитируемый пост)
Потерь не было, но можно добавить, уменьшить количество цветов например, png можно еще сгладить, оно тогда сожмётся лучше. 

не подскажете, какие библиотеки это умеют?

Автор: nickless 4.4.2010, 14:38
Цитата(Alex13 @  4.4.2010,  11:06 Найти цитируемый пост)
не подскажете, какие библиотеки это умеют? 

Уменьшать цвета нужно при сохранении файла, соответствующей библиотекой. А чтобы сглаживать, ну imagemagick может smile

Автор: Void 4.4.2010, 16:50
lossless оптимизацию PNG умеет утилита pngcrush.
lossy (с превращением полноцветной картинки в 8-битную с палитрой) — pngnq.
Для GIF тоже может быть что-то подобное.

Автор: proc_maker 14.9.2010, 12:31
Цитата(Alex13 @  4.4.2010,  12:06 Найти цитируемый пост)
не подскажете, какие библиотеки это умеют? 


jpeglib.h
gif_lib.h
libpng

Создаете распаковщики для тех типов картинок которые будете пережимать, далее все пакуете в jpeg с нужным коэфициентом сжатия. Распаковка достаточно несложная в большинстве случаев. Далее - дело техники как подсунуть их вместо оригинальных клиенту.

Надеюсь вычислительной мощности сервера хватит чтобы обслуживать желаемое кол-во клиентов  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)