2011-10-24 23 views

Trả lời

2
BufferedImage img = ImageIO.read(new File("lol")); 
int rgb = img.getRGB(x, y); 

Color c = new Color(rgb); 

Bây giờ bạn có thể sử dụng Color.getRed(), getGreen(), getBlue() và getAlpha() để có được những giá trị khác nhau

1

Sử dụng ImageIO.read để đọc các tập tin hình ảnh trong như một BufferedImage, và sau đó sử dụng một trong các phương pháp getData để có được hình ảnh Raster của hình ảnh. Và trong đó, bạn sẽ tìm thấy các phương thức để lấy dữ liệu pixel.

2
BufferedImage image = ImageIO.read(new File(myFilename)); 
int pixel = image.getRGB(0, 0); // Top left pixel. 
// Access the color components, valued 0-255. 
int alpha = (pixel >>> 24) & 0xff; // If applicable to image format. 
int r = (pixel >>> 16) & 0xff; 
int g = (pixel >>> 8) & 0xff; 
int b = pixel & 0xff; 

[Chỉnh sửa] Lưu ý rằng @ câu trả lời Sibbo là đúng và thuận tiện sử dụng Color class color accessor methods; tuy nhiên, việc trích xuất các màu trực tiếp thông qua thao tác bit như tôi đã chứng minh có thể sẽ nhanh hơn đáng kể vì nó tránh được sự phí tổn của các cuộc gọi hàm dựng lặp lại.

+0

int r = (pixel >>> 16) & 0xff; int g = (pixel >>> 8) & 0xff; int b = pixel & 0xff; các dòng mã này làm gì? và toán tử & toán tử hoặc 0xff có nghĩa là gì – lancegerday

+0

@lancegerday: các dòng đó trích xuất các giá trị màu riêng lẻ (r, g, b, a) từ giá trị [pixel RGBA tổng hợp "] (http://en.wikipedia.org/wiki/RGBA_color_space) để bạn có thể dễ dàng kiểm tra từng cá nhân dưới dạng giá trị từ 0 đến 255. – maerics

1

Không sử dụng các giá trị rgb sau khi bạn hoàn thành chuyển hình ảnh vào một raster sử dụng rasters .getData phương pháp

1

Sử dụng này:

Image img.getRGB(x, y); 

Color c = new Color(rgb); 
Các vấn đề liên quan