使用getPixel()方法,然后检查rgb值

时间:2015-07-12 05:36:53

标签: android colors

我使用getPixel()方法返回位图中每个像素的rgb值。然后我使用if()语句将rgb值与我自己预定义的rgb值进行比较,然后在语句为真时执行代码。如下所示:

for(int x=startX; x<w; x++){
            for(int y=startY; y<h; y++){
                int pixel = img.getPixel(x, y);

                if(pixel == Color.rgb(255, 255, 255)); //some code
                if(pixel == Color.rgb(255, 0, 0)); //some code
                if(pixel == Color.rgb(255, 255, 0)); //some code
                if(pixel == Color.rgb(120, 60, 0)); //some code
}

我的问题是,当前三个if()语句被执行时,第四个从不执行。我知道我的图像包含所有rgb值的像素,因为我自己创建了图像。我猜测问题是因为颜色类中没有预定义变量,rgb值为(120,60,0)。所以基本上我想知道是否还有这个问题。也许比getPixel()更好的方法?我只需要第四个if()语句中的代码就可以执行。

编辑 - 更多信息:

我的图片有一个png扩展名。我按以下方式将其加载到位图:

public static Bitmap loadBitmap(String filename, boolean transparency) {
        InputStream inputStream = null;
        try {
            inputStream = MainActivity.assets.open(filename);
        } catch (IOException e) {
            e.printStackTrace();
        }
        BitmapFactory.Options options = new BitmapFactory.Options();
        if (transparency) {
            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        } else {
            options.inPreferredConfig = Bitmap.Config.RGB_565;
        }
        Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null,
                options);
        return bitmap;
    }

通过assets变量检索图像,该变量是我在MainManager类型AssetManager中的静态变量。我通过声明assets = getassets()来初始化这个变量。我的图像位于我的资产文件夹中,然后由AssetManager检索。

0 个答案:

没有答案