我有3个灰度图像我想要着色,上周我问了一个类似的问题并在那里接受了建议,我有下面的代码,它读取图像中每个像素的RGB值。我想对每个单独的图像执行此操作,即,第一图像读取红色像素值,第二图像读取蓝色像素值,第三图像读取绿色像素值,并从中创建新图像。 我尝试重复代码3次,但它似乎只是将它应用于一个像素并不断重复但我无法找到原因;我基本上复制并粘贴了3次代码,但我确定这是一种更短更简单的方法,只是不确定是什么!
我正在使用以下内容阅读图像:
public static void main(final String args[])
throws IOException
{
File file = new File("src/resources/rgb.jpg");
BufferedImage src = ImageIO.read(file);
BufferedImage image = toBufferedImage(src);
save(image, "png");
}
private void img1(BufferedImage image, BufferedImage src) {
for (int x = 0; x < image.getWidth(); x++) {
for (int y = 0; y < image.getHeight(); y++) {
int clr = src.getRGB(x, y);
int red = (clr & 0x00ff0000) >> 16;
//int green = (clr & 0x0000ff00) >> 8;
//int blue = clr & 0x000000ff;
}
}
}
所以我基本上需要重复代码3次,然后从结果中创建一个新图像。只是想知道是否有人可以提供帮助?
提前致谢
答案 0 :(得分:1)
将double for循环输出到一个方法中(不确定您希望它如何工作):
private void doStuffToImage(Image image, Image src) {
for (int x = 0; x < image.getWidth(); x++) {
for (int y = 0; y < image.getHeight(); y++) {
final int clr = src.getRGB(x, y);
final int red = (clr & 0x00ff0000) >> 16;
final int green = (clr & 0x0000ff00) >> 8;
final int blue = clr & 0x000000ff;
}
}
}
此外,抛弃所有final
s。