/**
* 图片切换特定颜色
* originalColor 原始色
* image 图片
* targetColor 目标色
* minSemblance 最小相似度(0到1),最小相似度取1则只替换一种颜色,而非一个颜色区
*/
public static Image pixLightColorWithImage(Color originalColor, Image image, Color targetColor, double minSemblance){
PixelReader pixelReader = image.getPixelReader();
if(image.getWidth()>0 && image.getHeight() >0){
WritableImage wImage;
wImage = new WritableImage(
(int)image.getWidth(),
(int)image.getHeight());
PixelWriter pixelWriter = wImage.getPixelWriter();
for(int y = 0; y < image.getHeight(); y++){
for(int x = 0; x < image.getWidth(); x++){
Color color = pixelReader.getColor(x, y);
double semblance = getColorSemblance(originalColor, color);
// 选择颜色相似程度区间
if(semblance >= minSemblance && semblance <= 1){
// 换色
color = targetColor;
}
pixelWriter.setColor(x, y, color);
}
}
return wImage;
}
return null;
}
依赖我的其他博客:
Java 颜色相似度:https://blog.csdn.net/haoranhaoshi/article/details/88073906