|
|
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть необходимость сжимать большие изображения (например фотки), хранящиеся на сервере, перед передачей клиенту по медленному каналу связи. Подскажите бибы, с помощью которых можно это делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 12:10:54 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
А при чем здесь Java? Форматы хранения изображений, обычно, уже используют сжатие. Сжать сильнее без потери качества, зачастую, затруднительно. Пережимать изображения в Java через ImageIO достаточно расточительно, лучше использовати нативные инструменты. Если изображения не пережимать, тогда любым zip-ованием можно попробовтаь сэкономить пару байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 12:18:55 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Фотка с фотоаппарата занимает 5-8 метров. Если ее передавать по мобильному интернету и минуты времени не хватает. В принципе, может попробовать просто уменьшать ее размер (ширину х высоту)? Это ведь позволит уменьшить размер файла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 12:45:31 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
alex2808Фотка с фотоаппарата занимает 5-8 метров. Если ее передавать по мобильному интернету и минуты времени не хватает. Так мы же не знаем вашей бизнес задачи. Можно всегда передать thumbnail. Но их не так часто генерят на лету. Проще их сгенерировтаь заранее. alex2808В принципе, может попробовать просто уменьшать ее размер (ширину х высоту)? Это ведь позволит уменьшить размер файла? Конечно. Если это jpeg можно и сжатие посильнее задать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 12:50:30 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
У нас была похожая задача - в документе 2-3 десятка фоток, оператору (в регионе) надо сгруппировать их по определенным признакам. Хранилище документов - для программы внешнее, под хранение контрольных отпечатков не заточено. Поэтому решили сжимать на лету. В результате клиент получает сжатые отпечатки, для которых указано максимальное разрешение по ширине/высоте (сейчас 160px), вполне комфортно может их сортировать с помощью DND, если надо, кликает на отпечаток и с помощью ajax смотрит в полном разрешении. Хинты для преобразования, возможно, подсмотрели здесь, качество устраивает: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Пока для ~ 100 пользователей сервер практически не напрягается, далее, возможно, придется городить кеш для отпечатков. Для клиентов тоже вполне комфортно, отпечатки при таком разрешении имеют размер 3-5 кб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 13:36:33 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Blazkowicz... Пережимать изображения в Java через ImageIO достаточно расточительно, лучше использовати нативные инструменты. ... А почему? - Интересно, почему нежелательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 00:56:15 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
IDVsbruckBlazkowicz... Пережимать изображения в Java через ImageIO достаточно расточительно, лучше использовати нативные инструменты. ... А почему? - Интересно, почему нежелательно. "Расточительно" - по памяти. Зависит, конечно? от формата. Eсли речь про то что исходные файлы в "нежатом" JPEG, то это 20-30 мегапикселей. 80Мб только на то чтобы загнать картинку в битмап. Плюс некоторые расходны на "пережатие" и сам thumbnail. А теперь прикинем если у нас многопользовательский сервер... Если, нет, то и проблем меньше. Но мы то не знаем что за система у автора. Мне кажется, что оптимальным вариантом будет запуск асинхронного процесса создания thumbnail ещё на этапе хранения этих крупных изображений. Тогда юзеры смогут получать thumbnail, вообще не нагружая сервер. А сам асинхронный процесс создания thumbnail проще контролировать через ThreadPool например. Т.е. мы точно будем знать что у нас не более N изображений одновременно обрабатываются в памяти. И вот тогда уже можно подумать, ImageIO нас устраивает по влиянию на GC и производительности. Или нет. И ковырять различные Opensource API и нативные реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 10:28:56 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Хорошая коллекция http://stackoverflow.com/a/2407269 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 10:29:24 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Ясно. Спасибо. Просто возникла мысль: какая разница - запускать нативный инструмент или пережимать в коде - затраты памяти по идее не так различаются. А что до миниатюр, то согласен, причем, иногда даже надо делать 2 - действительно миниатюрка и картинка в размере под разрешение экрана - для быстрого показа. Но это от задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 11:11:14 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
IDVsbruckЯсно. Спасибо. Просто возникла мысль: какая разница - запускать нативный инструмент или пережимать в коде - затраты памяти по идее не так различаются. Зависит от того какой эффект это производит на кучу в нашей системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 11:13:05 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Кроме этого я подозреваю что должны существовать тулзы, которые могут пережимать изображения более поточно. Т.е. ещё на этапе распаковки из формата в bitmap, можно не хранить целиком оригинальный bitmap, а обновлять непосредственно thumbnail новыми данными. С ImageIO так не выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 11:15:28 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, кстати интересно как ImageIO внутри реализован. Подвязан-ли он на какие-то недокументирвоанные sun.* native вызовы или реализует все кодеки сам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 18:02:46 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
maytonBlazkowicz, кстати интересно как ImageIO внутри реализован. Подвязан-ли он на какие-то недокументирвоанные sun.* native вызовы или реализует все кодеки сам? Именно кодеки для отдельных типов скорее всего pure java. Но они подключаются через SPI, так что нативные в теории там тоже могут быть. Тот же JAI вроде что-то нативное делает. Кроме этого BufferedImage тоже может быть связан с нативными ресурсами и держать изображение вне хипа в нативной памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 20:03:47 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКроме этого BufferedImage тоже может быть связан с нативными ресурсами и держать изображение вне хипа в нативной памяти. Это вообще капец. Неучтённая память получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 20:29:10 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
maytonЭто вообще капец. Неучтённая память получается. ByteBuffer, чо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 20:39:44 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
imagemagic уже предлагали? с оберткой im4java ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 10:39:13 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
alex2808Всем привет. Есть необходимость сжимать большие изображения (например фотки), хранящиеся на сервере, перед передачей клиенту по медленному каналу связи. Подскажите бибы, с помощью которых можно это делать? Я-бы предложил два кейса. 1) Подождать пока внедрят Jpeg2000. Там это "из коробки". 2) Сделать thumbnails. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 12:48:22 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Еще есть третий вариант. Я помню во времена медленных интерентов было модно использовать прогрессивную развёртку для Gif-картинок и Jpeg. И это реально работало. Пользователь видел картинку когда уже когда 5-20% трафика было передано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 12:50:06 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
mayton1) Подождать пока внедрят Jpeg2000. Там это "из коробки". 1. Сколько ждать? 2. Что там должно выпрыгнуть "из коробки"? Спеки Jpeg 2000 читал еще в 1998 году, Вы его с тех пор ждете? Идея tiled image уже в 1998 году было внесена во многие api (интрефейсы) java, вроде в том числе и в java 2d. Надеюсь с тех пор уже успели и имплементировать. Мы же юзали JTIP и SPIF (Jpeg tiled piramedales сорри за мой французский, SPIF европейское расширение JFIF с информационными тегами) В наше время, если кому нужно, то народ к статическим картинкам прикручивает WMS-T сервера (Web Map Service tile cache) и радуется жизни. См. ряд статей на http://gis-lab.info/ ( http://gis-lab.info/qa/zoomable-image-leaflet.html). Можно и FOI сервер /фьюче оф интерест/ прикрутить. Нафига ждать второго пришествия Jpeg 2000 на землю - мне не особо понятно. Правда, боюсь, задача автора не столь масштабна. mayton...прогрессивную развёртку для .. Jpeg. И это реально работало... Для JPEG ???? Эээээээээ Другое дело, что в EXIF можно (и большинство вендоров фотиков и прочей техники складывает) положить thumbail для предпросмотра. Но это отнюдь не progressive GIF, progressive PNG. Как вариант, автор может, конечно, все изображения хранить в виде jpeg (exif) с thumbail и извлекать его оттуда, но значительно проще просто хранить 2-3 изображения. Иконка, экранного разрешения, исходный файл. Ну, или если изображения очень большие (сотни-тысячи мегапикселей), то tiled images с предварительным масштабированием (см.выше). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 14:38:21 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevДля JPEG ???? Эээээээээ http://ru.wikipedia.org/wiki/JPEG В случае progressive JPEG сжатые данные записываются в выходной поток в виде набора сканов, каждый из которых описывает изображение полностью с всё большей степенью детализации. Это достигается либо путём записи в каждый скан не полного набора коэффициентов ДКП, а лишь какой-то их части: сначала — низкочастотных, в следующих сканах — высокочастотных (метод «spectral selection» то есть спектральных выборок), либо путём последовательного, от скана к скану, уточнения коэффициентов ДКП (метод «successive approximation», то есть последовательных приближений). Такое прогрессивное представление данных оказывается особенно полезным при передаче сжатых изображений с использованием низкоскоростных каналов связи, поскольку позволяет получить представление обо всём изображении уже после передачи незначительной части JPEG-файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 15:07:04 |
|
||
|
Сжатие изображения на лету
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevmayton1) Подождать пока внедрят Jpeg2000. Там это "из коробки". 1. Сколько ждать? 2. Что там должно выпрыгнуть "из коробки"? Сколько еще ждать - смотрие "Правовые споры", и "поддержка в браузерах" нашего предмета обсуждения. Из коробки должа выйти технология для которой создание thumbnails является ненужной тратой времени. Сам по себе файл (а точнее его заголовок) уже является thumbnails по отношению к самому себе. Если я как инженер, прочитавший документацию, попробовавший демо-утилиты и убедившийся что всё обстоит именно так чего-то не понял, или у вас есть другие сведения - то аргументируйте. И не пишите много вопросительных знаков. У нас не политика. Просто технический спор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 15:15:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38426423&tid=2128380]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 380ms |

| 0 / 0 |
