2011-04-02 18 views
5

Tamam, bir görüntüyü alan, bir piksel bloğunu bir diziye ayıran ve ardından her bir rgb değerini her biri için alan bir program üzerinde çalışıyorum. bu dizideki piksel.Bir ham negatif rgb int değerini bir 3 sayı rgb değerine dönüştürün

bir formül var mı bu

//first pic of image 
//just a test 
int pix = myImage.getRGB(0,0) 
System.out.println(pix); 

Bu çıkarır -16106634

(R, G, B) elde etmek için bu int değer

üzerinden değeri ancak ne zaman , Alg, yöntem?

cevap

11

BufferedImage.getRGB(int x, int y) yöntemi, TYPE_INT_ARGB renk modelinde her zaman bir piksel döndürür. Yani sadece bu gibi her renk için doğru bit izole etmek gerekir: at (

int a = (pix >> 24) & 0xFF; 

Alternatif kolaylık Color(int rgba, boolean hasalpha) yapıcısını kullanabilirsiniz:

int pix = myImage.getRGB(0, 0); 
int r = (pix >> 16) & 0xFF; 
int g = (pix >> 8) & 0xFF; 
int b = pix & 0xFF; 

alfa bileşeni istemek edersek performans maliyeti.

+0

Teşekkür ederiz! Mükemmel –

+0

Cool çalıştı. Bit vardiyalarını doğru yönde kopyaladığınızdan emin olun ... Aslında ilk defa bir yazım hatası yaptım ve bir düzenlemede düzeltdim. – WhiteFang34

2
int pix = myImage.getRGB(0,0); 
Color c = new Color(pix,true); // true for hasalpha 
int red = c.getRed(); 
int green = c.getGreen(); 
int blue = c.getBlue(); 
İlgili konular