Bitmap.getpixel не читает правильный цвет? - PullRequest
2 голосов
/ 28 ноября 2011

Я пытаюсь сделать очень простой движок плиток. Однако использование Bitmap.getpixel(x,y) не всегда соответствует цвету правильно. Кажется, с 0xFFFFFFFF, 0xFF000000, 0xFF189600 и 0xFF18FF00 все в порядке, но есть проблема с 0xFF186600. Я попытался изменить его на несколько разных похожих цветов, но, похоже, он все еще не правильно читает. Я сравниваю с простым заявлением переключателя. Вот код для моего метода

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 голосов
/ 28 ноября 2011

-15177472 - это 0xFF186900.Обратите внимание на цифру 9 вместо 6, который вы искали.

Откуда вы получаете эти ожидаемые значения и как вы загружаете растровые изображения?Если вы создаете растровые изображения в программе для рисования, а затем загружаете их в свое приложение для Android, вы можете обнаружить, что они распаковываются как 16bpp, и в этом случае будет некоторая потеря точности при преобразовании значений пикселей обратно в 32bpp для getPixel().

...