ОБСУЖДЕНИЕ

Изменение размера изображения без потери качества.

15 ответов 5,7 тыс.
Автор темы
Всем привет!
Интересует алгоритм изменения размера изображения без потери качества.
В инете нашел это. Результат отличный, но к сожалению библиотека платная :(
 
Пробовал. Не вариант :(
 
c ULTRA_QUALITY?!

можно еще попробовать http://stackoverflow.com/a/36367652
на крайний случай, взять декомпилятор и подсмотреть алгоритм imageresize4j
 
Исходное изображение у меня 1620х1080, разрешение 300dpi. Нужное изображение - 1280х853 и во всех вариантах разрешение становится 96dpi. Куда уж тут поэтапно уменьшать изображение?
 
я, конечно, не специалист по графике, но dpi это вроде как характеристика отображающего устройства, а не изображения
 
это характеристика любого изображения
 
Ну что, декомпилил я ImageResize4J и получил такое :)
523.png
Импортировать классы в проект никак... т.к. есть одинаково именованные :)
 
Это ProGuard обработано. Специально от таких умных :)
 
Ну что, декомпилил я ImageResize4J и получил такое :)
Посмотреть вложение 6775
Импортировать классы в проект никак... т.к. есть одинаково именованные :)

в общем и целом, java case sensitive для имен классов
проблемы только при разработке, если ОС или ФС case insensitive
поднять виртуалку, чтобы порефакторить имена вроде как не сложно
 
Вот вариант с поэтапным:
http://stackoverflow.com/questions/7951290/re-sizing-an-image-without-losing-quality

А вот тут есть всякие разные варианты, пробовали их?
http://stackoverflow.com/questions/24745147/java-resize-image-without-losing-quality
Да, все это пробовал и результат не фонтан.
Поэтапные варианты не устраивают. Слишком трудозатратны. Обрабатывать необходимо тысячи фотографий.
Лучше ImageResize4J к сожалению пока не нашел.
Нашел одну DLL, результат идентичен ImageResize4J, но не все файлы читаются :(
 
Нашел решение.
Библиотека вроде как индусов. Алгоритм использует фильтр Ланцоша.
Они предлагают два метода:
Создание миниатюр
Java:
BufferedImage thumbnail = QualityThumbnail.getScaledImage(sourceImage,128,128);
и изменение размера
Java:
BufferedImage thumbnail = QualityScaler.getScaledImage(source,1280,853);
Результатом доволен.
Главное правильно выбрать метод в зависимости от нужного размера изображения.
 

Вложения

  • jdeli.zip
    jdeli.zip
    214,2 КБ · Просмотры: 394