Я пытаюсь изменить размер изображения с помощью Java, и мне нужно получить точный эффект, который происходит при изменении размера с помощью Photoshop Nearest Neighbor (сохранить резкие края).
Дело в том, что я никогда не получаю точно такой же эффект...
Я пробовал следующие методы:
1) java-image-scale от mortennobel lib
resampleOp.setFilter(ResampleFilters.getBoxFilter());
это работает отлично, но оставляет некоторые артефакты на изображении, которых нет, когда это делает фотошоп.
2) Библиотека TwelveMonkeys для работы с изображениями. (вот ссылка на гитхаб) Тоже не сработало, PointFilter полностью уничтожает градиент внутри, а Box filter делает то же самое, что и mortennobel getBoxFilter.
3) AWT AffineTransform, это был худший вариант, совершенно нереальный ресайз.
Теперь я в замешательстве, размер ближайшего соседа фотошопа отличается от того, что означает имя, или все остальные библиотеки делают это неправильно (во втором случае, какая библиотека сделает это правильно?)
Вот изображения до и после, которые создает Photoshop.
А вот изображение, созданное с помощью get BoxFilter из mortennobel lib.
Я немного увеличил изображения, чтобы вы могли видеть детали, на самом деле они меньше. Любая помощь очень ценится :) Я действительно застрял в этом.
RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR
отличаются от того, чего вы хотите достичь (см. также today.java.net/pub/a/today/2007/04/03/ ) - person Marco13   schedule 21.09.2014ResampleOp
(из TwelveMonkeys/метод 2) сPointFilter
должно дать точно такой же результат, какAffineTransformOp
сVALUE_INTERPOLATION_NEAREST_NEIGHBOR
(поскольку это то, что используется внутри). Если это не так, это следует считать ошибкой. о нет! ;-) - person Harald K   schedule 22.09.2014