Методы RescaleOp включают параметр RenderingHints. Есть подсказка под названием KEY_INTERPOLATION
, которая решает, какой цвет использовать при масштабировании изображения.
Если вы используете значение VALUE_INTERPOLATION_NEAREST_NEIGHBOR
для KEY_INTERPOLATION, Java будет использовать исходные цвета, а не какой-либо тип алгоритма для пересчета новых цветов.
Таким образом, вместо того, чтобы белые линии стали серыми или какой-то другой смесью цветов, вы получите либо белые линии, либо вообще не получите никаких линий. Все зависит от коэффициента масштабирования и четной или нечетной строки. Например, если вы масштабируете вдвое, то каждая горизонтальная линия размером 1 пиксель имеет как минимум 50% -ное изменение в новом изображении. Однако, если бы белые линии имели высоту два пикселя, у вас была бы 100% вероятность появления белой линии.
Это, вероятно, самое близкое, что вы получите, кроме написания собственного метода масштабирования. К сожалению, я не вижу других подсказок, которые могли бы помочь в дальнейшем.
Чтобы реализовать собственный метод масштабирования, вы можете создать новый класс, который реализует интерфейс BufferedImageOp
, и реализовать метод filter()
. Используйте getRGB()
и setRGB()
на объекте BufferedImage, чтобы получить пиксели от исходного изображения и установить пиксели на новом изображении.