В настоящее время в приведенном ниже коде я проверяю для каждого пикселя, если он белый, то если он не белый, то меняя его на новый цвет, он не работает для градиентного изображения. Особенно тени в правом и левом углах. Я прикрепил изображения, синие входные необходимо преобразовать в другое красное изображение в качестве вывода. Любые предложения будут полезны.
for (int xx = 0; xx < width; xx++) {
for (int yy = 0; yy < height; yy++) {
int clr = image.getRGB(xx, yy);
int R = (clr & 0x00ff0000) >> 16;
int G = (clr & 0x0000ff00) >> 8;
int B = clr & 0x000000ff;
double Y = 0.2126 * R + 0.7152 * G + 0.0722 * B;
boolean isWhite = Y > 128 ? true : false;
if (!isWhite) {
int[] pixels = raster.getPixel(xx, yy, (int[]) null);
pixels[0] = Integer.valueOf(hexColor.substring(1, 3), 16);
pixels[1] = Integer.valueOf(hexColor.substring(3, 5), 16);
pixels[2] = Integer.valueOf(hexColor.substring(5, 7), 16);
raster.setPixel(xx, yy, pixels);
}
}
}
