2016-08-27 134 views
0

我要處理的圖像來獲得在固定的像素顏色的方法:獲取像素的顏色在Android的

public static void getColor(Bitmap btm,Activity act){ 
    int w = 300; 
    int h = 500; 
    btm=Bitmap.createScaledBitmap(btm, w,h, true); 

    color1= btm.getPixel(30, 50); 
    color2= btm.getPixel(50, 70); 
    color3= btm.getPixel(80,110); 
    color4= btm.getPixel(30, 120); 
    color5= btm.getPixel(100,150); 
    color6= btm.getPixel(200, 200); 
    color7= btm.getPixel(230, 300); 
} 

的問題是,它是根據屏幕大小給予不同的設備不同的顏色,甚至我在這裏給出一個固定的大小:

btm=Bitmap.createScaledBitmap(btm, w,h, true); 

有沒有什麼辦法讓同一像素的相同顏色,無論屏幕大小?

+0

Hiw你檢索位圖嗎? – Vyacheslav

+0

我不知道你的意思,但我在其他活動中讀取位圖 位圖btm = BitmapFactory.decodeResource(this.getResources(), R.drawable.colors); 並處理方法中的顏色。 – Radwa

回答

2

試試這個。我用它來獲得圖像的主要顏色。

public static int getDominantColor(Bitmap bitmap) { 
    Bitmap newBitmap = Bitmap.createScaledBitmap(bitmap, 1, 1, true); 
    final int color = newBitmap.getPixel(0, 0); 
    newBitmap.recycle(); 
    return color; 
} 
+0

非常感謝,它工作正常 – Radwa

0

問題不在於您共享的方法,而是您生成位圖並將其傳遞給此函數的方式,該函數在不同設備上具有不同的大小。

僅僅因爲您將設備縮放到一定的尺寸並不意味着所有像素對於不同的屏幕尺寸都具有相同的顏色。這個問題不能通過從位圖中讀取顏色來解決,所以你必須解釋實際的目的,所以我們可以用不同的技術來解決它。

+0

我的目的是讓所有的應用程序佈局和控件具有相同的顏色,就像整個應用程序的主題一樣,我也將在其他應用程序中使用它。 – Radwa

+0

爲此,使用屏幕截圖和閱讀像素顏色是最沒有效率的選擇,是否有理由決定使用此方法?你有沒有考慮過使用其他方法? – codetiger

+0

另外,要改變主題爲什麼你必須閱讀顏色? – codetiger