我知道我可以在照片处理软件中进行更改,但我想学会以编程方式进行更改,以便将其更改为我希望的任何颜色。
首先,我想说我一直在寻找解决方案大约两个小时,我找不到适合我的解决方案,或者找不到解决我确切问题的解决方案。
我从互联网上下载了一些图标,它们原本是黑色的,带有透明背景,这对菜单栏和东西很有用。但是,在我的工具栏上很难注意到它们,我想将这些图标上的黑色更改为白色。这是an edited screenshot of what I'm trying to achieve和a screenshot of what I achieve。 (对不起链接,我需要至少10个声望来发布图片。)
这是我的Utility类负责失败的工作:
public final class Utility{
public static ImageIcon replaceIconColor(ImageIcon icon, Color oldColor, Color newColor){
BufferedImage image = iconToImage(icon);
for(int y = 0; y < image.getHeight(); y++){
for(int x = 0; x < image.getWidth(); x++){
Color pixel = new Color(image.getRGB(x, y));
if((pixel.getRed() == oldColor.getRed()) && (pixel.getGreen() == oldColor.getGreen()) && (pixel.getBlue() == oldColor.getBlue()) && (pixel.getAlpha() == oldColor.getAlpha())){
image.setRGB(x, y, newColor.getRGB());
}
}
}
return new ImageIcon(image);
}
public static BufferedImage iconToImage(ImageIcon icon){
return Resources.loadImage(icon.getDescription());
}
}
我不确定您是否需要资源加载类代码,但我认为它只能帮助您完全理解我的问题并能够帮助我最好的帮助。所以,这是我的Resources类代码片段:
public static ImageIcon loadImageIcon(String fileName){
URL imageURL = Resources.class.getResource("/Resources/Images/" + fileName);
ImageIcon imageIcon = new ImageIcon(imageURL);
imageIcon.setDescription(fileName);
return imageIcon;
}
public static BufferedImage loadImage(String fileName){
URL imageURL = Resources.class.getResource("/Resources/Images/" + fileName);
BufferedImage image = null;
try{
image = ImageIO.read(imageURL);
}catch(IOException e){
e.printStackTrace();
}
return image;
}
如果在互联网上某处确实有解决方案,我很抱歉,但我找不到它。嗯,就是这样。我认为我足够具体。
提前谢谢!