获取每个像素的RGB值的最快方法是什么BufferedImage
?
现在我使用两个来获取 RGB 值for
循环如下面的代码所示,但获取这些值花费的时间太长,因为嵌套循环对我的图像总共运行了 479999 次。如果我使用 16 位图像,这个数字会更高!
我需要一种更快的方法来获取像素值。
这是我当前正在尝试使用的代码:
BufferedImage bi=ImageIO.read(new File("C:\\images\\Sunset.jpg"));
int countloop=0;
for (int x = 0; x <bi.getWidth(); x++) {
for (int y = 0; y < bi.getHeight(); y++) {
Color c = new Color(bi.getRGB(x, y));
System.out.println("red=="+c.getRed()+" green=="+c.getGreen()+" blue=="+c.getBlue()+" countloop="+countloop++);
}
}
我不知道这是否有帮助,我还没有测试过,但你可以这样获取 rgb 值:
BufferedImage bi=ImageIO.read(new File("C:\\images\\Sunset.jpg"));
int[] pixel;
for (int y = 0; y < bi.getHeight(); y++) {
for (int x = 0; x < bi.getWidth(); x++) {
pixel = bi.getRaster().getPixel(x, y, new int[3]);
System.out.println(pixel[0] + " - " + pixel[1] + " - " + pixel[2] + " - " + (bi.getWidth() * y + x));
}
}
正如您所看到的,您不必在循环内初始化新的颜色。我还按照 onemasse 的建议反转了宽度/高度循环,以从我已有的数据中检索计数器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)