2012-01-23 45 views
6

Tôi sẽ sử dụng phương thức getRGB của BufferedImage. Tôi muốn kiểm tra các điểm ảnh của một hình ảnh và xem cái nào trong số chúng có độ trong suốt (nói chung các điểm ảnh tôi sẽ có trong suốt sẽ là trong suốt). Làm thế nào tôi có thể lấy nó từ int mà getRGB trả về?Java BufferedImage làm thế nào để biết nếu một điểm ảnh là trong suốt

+2

'int transparency = ((img.getRGB (x, y) & 0xff000000) >> 24);' Byte đầu tiên là giá trị alpha. – Chad

Trả lời

17
BufferedImage img = .... 

public boolean isTransparent(int x, int y) { 
    int pixel = img.getRGB(x,y); 
    if((pixel>>24) == 0x00) { 
     return true; 
    } 
} 

Tất nhiên img phải ở định dạng đúng TYPE_4BYTE_ABGR hoặc một số định dạng hỗ trợ kênh alpha nếu sẽ luôn mờ đục (nghĩa là 0xff).

0

thay đổi chính xác để nhận giá trị alpha trong int là bằng >>> do bit dấu.

ví dụ: int alpha1 = (pixel1 & 0xff000000) >>> 24;

Các vấn đề liên quan