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

Тема в разделе "Java", создана пользователем NickProstoNick, 26 июл 2016.

  1. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Всем привет!
    Интересует алгоритм изменения размера изображения без потери качества.
    В инете нашел это. Результат отличный, но к сожалению библиотека платная :(
     
  2. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
  3. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Пробовал. Не вариант :(
     
  4. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    c ULTRA_QUALITY?!

    можно еще попробовать http://stackoverflow.com/a/36367652
    на крайний случай, взять декомпилятор и подсмотреть алгоритм imageresize4j
     
  5. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Угу.
    Смотрю, что все доступные варианты реализованы Graphics2D. А в таком исполнении результат везде приблизительно одинаково плохой :(
     
  6. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
  7. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Исходное изображение у меня 1620х1080, разрешение 300dpi. Нужное изображение - 1280х853 и во всех вариантах разрешение становится 96dpi. Куда уж тут поэтапно уменьшать изображение?
     
  8. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    я, конечно, не специалист по графике, но dpi это вроде как характеристика отображающего устройства, а не изображения
     
  9. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    это характеристика любого изображения
     
  10. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну что, декомпилил я ImageResize4J и получил такое :)
    523.png
    Импортировать классы в проект никак... т.к. есть одинаково именованные :)
     
  11. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Это ProGuard обработано. Специально от таких умных :)
     
  12. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    o_O, внезапно

    вы, действительно, в этом уверены?
     
  13. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    в общем и целом, java case sensitive для имен классов
    проблемы только при разработке, если ОС или ФС case insensitive
    поднять виртуалку, чтобы порефакторить имена вроде как не сложно
     
  14. romych2004

    romych2004 Well-Known Member

    Регистрация:
    1 апр 2013
    Сообщения:
    55
    Симпатии:
    4
  15. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Да, все это пробовал и результат не фонтан.
    Поэтапные варианты не устраивают. Слишком трудозатратны. Обрабатывать необходимо тысячи фотографий.
    Лучше ImageResize4J к сожалению пока не нашел.
    Нашел одну DLL, результат идентичен ImageResize4J, но не все файлы читаются :(
     
  16. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Нашел решение.
    Библиотека вроде как индусов. Алгоритм использует фильтр Ланцоша.
    Они предлагают два метода:
    Создание миниатюр
    Код (Java):
    BufferedImage thumbnail = QualityThumbnail.getScaledImage(sourceImage,128,128);
    и изменение размера
    Код (Java):
    BufferedImage thumbnail = QualityScaler.getScaledImage(source,1280,853);
    Результатом доволен.
    Главное правильно выбрать метод в зависимости от нужного размера изображения.
     

    Вложения:

    • jdeli.zip
      Размер файла:
      214,2 КБ
      Просмотров:
      1
Загрузка...

Поделиться этой страницей