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

NickProstoNick

Статус как статус :)
Green Team
22.08.2008
1 851
27
Всем привет!
Интересует алгоритм изменения размера изображения без потери качества.
В инете нашел это. Результат отличный, но к сожалению библиотека платная :(
 
Пробовал. Не вариант :(
 
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 КБ · Просмотры: 345
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab