Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 это форматы файлов с компрессией без потери качества, так что в них понижать нечего ![]() jpeg можно перепаковать |
Автор: nickless 24.3.2010, 03:29 |
Потерь не было, но можно добавить, уменьшить количество цветов например, png можно еще сгладить, оно тогда сожмётся лучше. |
Автор: xvr 24.3.2010, 09:35 | ||
Можно, но для этого потребуются уже другие библиотеки (обработки изображений). Еще можно gif и png разжать и перепаковать в jpeg. Тогда других библиотек не понадобится ![]() |
Автор: nickless 4.4.2010, 14:38 |
Уменьшать цвета нужно при сохранении файла, соответствующей библиотекой. А чтобы сглаживать, ну imagemagick может ![]() |
Автор: Void 4.4.2010, 16:50 |
lossless оптимизацию PNG умеет утилита pngcrush. lossy (с превращением полноцветной картинки в 8-битную с палитрой) — pngnq. Для GIF тоже может быть что-то подобное. |
Автор: proc_maker 14.9.2010, 12:31 |
jpeglib.h gif_lib.h libpng Создаете распаковщики для тех типов картинок которые будете пережимать, далее все пакуете в jpeg с нужным коэфициентом сжатия. Распаковка достаточно несложная в большинстве случаев. Далее - дело техники как подсунуть их вместо оригинальных клиенту. Надеюсь вычислительной мощности сервера хватит чтобы обслуживать желаемое кол-во клиентов ![]() |