Cách nhanh nhất để nhận giá trị RGB của mỗi pixel của BufferedImage
là gì?Cần cách nhanh hơn để nhận giá trị RGB cho mỗi Pixel của Ảnh đệm
Hiện tại tôi đang nhận giá trị RGB sử dụng hai vòng for
như được hiển thị trong mã bên dưới, nhưng mất quá nhiều thời gian để có được các giá trị đó khi vòng lặp lồng nhau chạy tổng cộng 479999 lần cho hình ảnh của tôi. Nếu tôi sử dụng hình ảnh 16 bit, con số này sẽ cao hơn nữa!
Tôi cần một cách nhanh hơn để có được giá trị pixel.
Đây là mã Tôi hiện đang cố gắng để làm việc với:
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++);
}
}
'nó thậm chí có thể tăng lên khi nào tôi sẽ sử dụng 16 bit image' - Tại sao các số lần lặp phụ thuộc vào bit trên mỗi pixel? Và trường hợp sử dụng cho điều đó là gì? Lưu ý rằng việc tạo các đối tượng 'Color' cũng như in ra bàn điều khiển sẽ mất một lúc. Nếu bạn muốn truy cập tất cả 479999 pixel, bạn không thể loại bỏ vòng lặp (bạn có thể hợp nhất chúng với nhau nhưng điều đó không tạo nên sự khác biệt lớn). – Thomas
Đầu ra làm chậm toàn bộ vòng lặp xuống. Hãy thử nó mà không cần. –
Nó có thể đi nhanh hơn rất nhiều nếu không có println –