Сжатие с заданным размером
От: sysif  
Дата: 26.12.10 16:08
Оценка:
Доброго времени суток!

Есть некоторый байтовый массив, содержащий картинку. Стоит задача — сжать эту картинку в jpeg с максимальным возможным качеством, имея заданное ограничение на максимальный размер файла.
Как лучше решать такую задачу? Подскажите плиз правильное направление.
Re: Сжатие с заданным размером
От: denisko http://sdeniskos.blogspot.com/
Дата: 26.12.10 16:27
Оценка:
Здравствуйте, sysif, Вы писали:

S>Доброго времени суток!


S>Есть некоторый байтовый массив, содержащий картинку. Стоит задача — сжать эту картинку в jpeg с максимальным возможным качеством, имея заданное ограничение на максимальный размер файла.

S>Как лучше решать такую задачу? Подскажите плиз правильное направление.

Если есть возможность залезть внутрь алгоритма, то передавать сначала наиболее низкочастотные коэффициенты, а потом набивать до нужного размера более высокочастотными.
<Подпись удалена модератором>
Re: Сжатие с заданным размером
От: HotDog Швейцария www.denebspace.com
Дата: 31.12.10 10:15
Оценка:
Здравствуйте, sysif, Вы писали:

s> Как лучше решать такую задачу? Подскажите плиз правильное направление.

Для jpeg2000 есть реализации в которых устанавливается конечный размер стрима, а коэффициенты упаковки высчитываются уже на этом основании.
Для обычного Jpeg такого нет. Можно попробовать подобрать примерные уровни компрессии для того или иного конечного размера файла, но результаты все равно будут "плавать" т.к. выход еще и от изображения сильно зависит.
avalon 1.0rc3 rev 363, zlib 1.2.3
Re: Сжатие с заданным размером
От: goto Россия  
Дата: 31.12.10 12:39
Оценка:
Здравствуйте, sysif, Вы писали:

S>Доброго времени суток!


S>Есть некоторый байтовый массив, содержащий картинку. Стоит задача — сжать эту картинку в jpeg с максимальным возможным качеством, имея заданное ограничение на максимальный размер файла.

S>Как лучше решать такую задачу? Подскажите плиз правильное направление.

jpeg2000 может.

Для jpeg — итерациями: пакуем в память; смотрим размер; подкручиваем коэффициент сжатия. Так, навскидку, итераций много не потребуется, по скорости все не намного превысит итоговую физическую запись результата на диск.
Re: Сжатие с заданным размером
От: sambl4 Россия  
Дата: 01.01.11 08:46
Оценка:
Здравствуйте, sysif, Вы писали:

S>Есть некоторый байтовый массив, содержащий картинку. Стоит задача — сжать эту картинку в jpeg с максимальным возможным качеством, имея заданное ограничение на максимальный размер файла.

S>Как лучше решать такую задачу? Подскажите плиз правильное направление.

В IrfanView есть подобная фича — по крайней мере можете поэкспериментировать — надо ли оно вам вообще будет в таком виде
Re[2]: Сжатие с заданным размером
От: LelicDsp Россия  
Дата: 02.01.11 17:19
Оценка:
S>>Есть некоторый байтовый массив, содержащий картинку. Стоит задача — сжать эту картинку в jpeg с максимальным возможным качеством, имея заданное ограничение на максимальный размер файла.
S>>Как лучше решать такую задачу? Подскажите плиз правильное направление.

D>Если есть возможность залезть внутрь алгоритма, то передавать сначала наиболее низкочастотные коэффициенты, а потом набивать до нужного размера более высокочастотными.

Не все так просто, там после этого еще lossless сжатие применяется
Re[3]: Сжатие с заданным размером
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 03.01.11 03:42
Оценка:
Здравствуйте, LelicDsp, Вы писали:

D>>Если есть возможность залезть внутрь алгоритма, то передавать сначала наиболее низкочастотные коэффициенты, а потом набивать до нужного размера более высокочастотными.

LD>Не все так просто, там после этого еще lossless сжатие применяется

В котором коэффициенты уже в нужном порядке записаны. Если аккуратно отрезать, то может получиться, но в такие дебри топикстартер вряд ли собирался.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.