2016-08-27 138 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