Как можно оптимизировать изображения без потерь в Java?

Здравствуйте.
Есть сайт-каталог объектов, в котором предусмотрено очень большое количество фотографий. Стараясь смотреть в будущее, решили сделать допустимый размер фотографий 2560px.

Встает вопрос сжатия загружаемых фото, но важным условием является "без потери качества".
Обычное сжатие JPG, указанное в процентах от 100, не подходит.
Для меня идеал для подражания - качество сжатия сервисом https://tinyjpg.com/

Вопрос: подскажите, существующие бесплатные/платные JAVA-библиотеки сжатия изображений без потерь качества. Также была бы полезна информация о специалистах, которые способны такую библиотеку сделать под заказ. А если таковых нет, то в какую сторону направить силы нашему программисту, чтобы вникнуть в эту тему?

Спасибо
  • Вопрос задан
  • 1889 просмотров
Решения вопроса 1
hisbvdis
@hisbvdis Автор вопроса
В данный момент наконец нашли открытую библиотеку на GitHub, очень хорошо сжимающую фото без потерь.

Правда, она не на Java написана, а на C++. Программист сказал, что нужно просто адаптировать под Java.
Но все же, это пока что лучшее решение.

Сайт с демо: https://github.com/Lymphatus
Страница в GitHub: https://github.com/Lymphatus
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@nirvimel
Попробую угадать как работает этот TinyJPG:
  1. Берется некоторое начальное значение уровня сжатия (не так важно какое).
  2. Задается некоторый целевой порог допустимых потерь (эта константа предварительно обкатывается в A/B тестах).
  3. На каждом шаге итерации высчитывается среднеквадратическое отклонение значений всех пикселов сжатого изображения (от оригинального), и сравнивается с пороговым знанием.
  4. Бинарным поиском находится минимальное значение уровня сжатия при котором выполняется условие (3).


Те, кто не заметил разницы в A/B тестах, не заметят разницы и в любых изображениях, сжатых по этому алгоритму.
Ответ написан
Комментировать
OrlovEvgenii
@OrlovEvgenii
golang developer / DevOps
Можно повесить вотчер который будет сам следить за появлением новых изображений на сайте и сжимать в фоновом режиме без потери качества
например этот

https://github.com/OrlovEvgeny/TinyJPG
Ответ написан
Комментировать
Ответ написан
Комментировать
@nehakakar
Для сжатия изображений без потерь в Java вы можете использовать Thumbnailator или Apache Commons Imaging. Если вам нужно индивидуальное решение, ищите фрилансеров на таких сайтах, как Upwork. Для быстрого онлайн-опционирования вы также можете попробовать онлайн-компрессор JPEG, например https://jpegcompressor.com
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы