【发布时间】:2016-04-27 04:35:59
【问题描述】:
我有一组黑白汉字字符图像,我正在尝试更改其颜色。我希望白色图像的所有白色部分(即不是字符的图像的所有部分)都变成特定的颜色。我正在使用 BufferedImages 执行此操作,方法是使用 for 循环遍历图像中的每个像素,检查它是否为白色,然后将白色更改为传递给该方法的颜色。以下是相关方法的代码:
public static void illuminateImage(BufferedImage elementImage, Color elementColor){
for (int j = 0; j < elementImage.getWidth(); j++){
for (int k = 0; k < elementImage.getHeight(); k++){
if(elementImage.getRGB(j, k) == Color.WHITE.getRGB()){//images1.get(0).getRGB(0, 0)){
elementImage.setRGB(j,k, elementColor.getRGB());
}
}
}
}
问题在于并非每个白色像素都在改变颜色。当我调用该方法时,不是汉字字符的图像的所有部分都不会改变颜色。虽然大部分会改变颜色,但部分有一些白色斑块。为什么会出现这种情况?
我认为解决这个问题的方法是编写代码来检查像素是否不是黑色,然后将它们更改为给定的颜色。但是,这不起作用,只是将整个图像变成给定的颜色,我认为是因为字符不是严格的黑色,即使它们看起来很像。我不知道如何获得字符的颜色。任何帮助,将不胜感激。
【问题讨论】:
-
很明显,图像中并非所有像素颜色都像黑色 (0,0,0) 和白色 (255,255,255) 一样简单。您需要考虑黑白范围或将每张图像中的像素修改为真正的黑白。
标签: java colors bufferedimage