Bitmap.getpixel没有正确的颜色?

时间:2011-11-28 00:48:34

标签: android colors getpixel

我正在尝试制作一个非常简单的磁贴引擎。但是,使用Bitmap.getpixel(x,y)并不总是正确匹配颜色。它似乎与0xFFFFFFFF0xFF0000000xFF1896000xFF18FF00一样正常,但0xFF186600存在问题。我尝试将其更改为多种不同的相似颜色,但它似乎仍然无法正确读取。我正在与一个简单的switch语句进行比较。这是我方法的代码

public void LoadLevel(Canvas canvas, int levelName)
{

        Bitmap level = BitmapFactory.decodeResource(getResources(), levelName);
        Bitmap startTile = BitmapFactory.decodeResource(getResources(), R.drawable.starttile);

        canvas.drawColor(Color.WHITE);

        int drawX = 0;
        int drawY = 0;

        for(int y = 0; y < level.getHeight(); y++)
        {
            for(int x = 0; x < level.getWidth(); x++)
            {
                switch(level.getPixel(x, y))
                {
                    case 0xFF000000: break;

                    case 0xFFFFFFFF: 
                        canvas.drawBitmap(startTile, drawX, drawY, null); 
                        break;

                    case 0xFF189600: 
                        canvas.drawBitmap(startTile, drawX, drawY, null); 
                        break;

                    case 0xFF18FF00: 
                        canvas.drawBitmap(startTile, drawX, drawY, null); 
                        break;

                    case 0xFF186600: 
                        canvas.drawBitmap(startTile, drawX, drawY, null); 
                        break;
                }

                Log.d("Color", Integer.toString(level.getPixel(x, y)));

                drawX += 128;
            }
            drawX = 0;
            drawY += 128;
        }
}

根据日志,颜色为“-15177472”。我不确定实际上是什么颜色......所以我不确定-15177472 == 0xFF186600

我做错了什么不能得到像素? android正在改变图像吗?我想使用安全的颜色吗?

1 个答案:

答案 0 :(得分:0)

-151774720xFF186900。请注意9数字,而不是您要查找的6

您从哪里获得这些预期值,以及如何加载位图?如果您在绘图程序中创建位图,然后将它们加载到Android应用程序中,您可能会发现它们被解压缩为16bpp,在这种情况下,将像素值转换回32bpp时,会有一些精度损失{ {1}}。