我使用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检索。