2012-01-23 11 views
6

Zamierzam użyć metody getRGB z BufferedImage. Chcę sprawdzić piksele obrazu i zobaczyć, które z nich mają przezroczystość (ogólnie piksele, które będę przezroczyste, będą całkowicie przezroczyste). Jak mogę uzyskać to z int, że getRGB zwraca?Java BufferedImage jak sprawdzić, czy piksel jest przezroczysty

+2

'int transparency = ((img.getRGB (x, y) i 0xff000000) >> 24);' Pierwszy bajt jest wartością alfa. – Chad

Odpowiedz

17
BufferedImage img = .... 

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

oczywiście IMG musi być w odpowiednim formacie lub TYPE_4BYTE_ABGR pewnym formacie, który obsługuje kanałów alfa else if zawsze będzie nieprzezroczysty (tj 0xff).

0

Poprawna zmiana, aby uzyskać wartość alfa w int, jest >>> ze względu na bit znaku.

przykład: int alpha1 = (piksel1 & 0xff000000) >>> 24;

Powiązane problemy