Опитвам се да преоразмеря изображение с Java и трябва да получа точния ефект, който се получава, когато преоразмерите с Photoshop Nearest Neighbor (Запазване на твърдите ръбове).
Работата е там, че никога не получавам точно същия ефект...
Опитах следните методи:
1) java-image-scale от mortennobel lib
resampleOp.setFilter(ResampleFilters.getBoxFilter());
това се представя чудесно, но оставя някои артефакти в изображението, които не са там, когато го прави Photoshop.
2) Библиотека TwelveMonkeys за манипулиране на изображения. (ето връзката към github) Не работи добре, PointFilter напълно унищожава градиента вътре и Box filter прави същото като mortennobel getBoxFilter.
3) AWT AffineTransform, това беше най-лошият, напълно нереалистично преоразмеряване.
Сега съм объркан дали най-близкият съсед на photoshop преоразмерява по различен начин от това, което означава името, или всички други библиотеки го правят погрешно (във втория случай коя е библиотеката, която ще го направи правилно?)
Ето изображенията преди и след, генерирани от 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