2012-01-23 2 views
6

Я собираюсь использовать метод getRGB BufferedImage. Я хочу проверить пиксели изображения и посмотреть, какие из них имеют прозрачность (в общем, пиксели, которые будут прозрачными, будут полностью прозрачными). Как я могу получить его из int, который возвращает getRGB?Java BufferedImage, как узнать, прозрачен ли пиксель

+2

'int transparent = ((img.getRGB (x, y) & 0xff000000) >> 24);' Первый байт является альфа-значением. – Chad

ответ

17
BufferedImage img = .... 

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

конечно же IMG должен быть в правильном формате TYPE_4BYTE_ABGR или какой-то формат, который поддерживает альфа-каналы иначе, если всегда будет непрозрачным (т.е. 0xff).

0

правильный сдвиг для получения значения альфа в int с >>> из-за знакового бита.

пример: int alpha1 = (pixel1 & 0xff000000) >>> 24;

Смежные вопросы