Цвета Android "смешаны" на телефоне, сплошные на планшете - PullRequest
0 голосов
/ 18 августа 2011

У меня есть простой алгоритм заливки на основе растрового изображения, который берет цвет и заполняет область растрового изображения этим цветом. Проблема, которую я вижу, заключается в том, что на моем телефоне, HTC Evo 4G, когда алгоритм заполняет растровое изображение, он фактически размещает пиксели разного цвета, а на Galaxy Tab 10.1 один и тот же код размещает один цвет по всей области. Некоторый код сделает это понятнее.

Bitmap dst = ...
int replacementColor = Color.GRAY; //Color.DKGRAY and Color.LTGRAY also show the issue

dst.setPixel(x, y, replacementColor);
if(dst.getPixel(x, y) != replacementColor)
{
    //Only gets triggered on the HTC Evo, not the Galaxy Tab
    Log.d("Pixels don't match");
}

Если я сделаю снимок экрана устройства и увеличу масштаб, вы можете четко увидеть рисунок шахматной доски на Evo и сплошной цвет на вкладке Galaxy.

Я уверен, что это хорошо известная проблема с графикой, но я не знаю правильной терминологии, чтобы выяснить, как (и если) я могу ее обойти. Проблема возникает, когда я пытаюсь заполнить эту область во второй раз - мой алгоритм соответствует цветам, и только области одинакового цвета, но после заполнения серым цветом на телефоне у меня нет сплошной области того же цвета. цвет, поэтому алгоритм не заполняет всю область.

Любые идеи, как я могу наложить сплошной цвет на Evo, или определить, что эта проблема происходит, чтобы я мог соответствующим образом заполнить область во второй раз? Может быть, мне нужно посмотреть на соседние пиксели и усреднить цвет?

1 Ответ

0 голосов
/ 20 августа 2011

Дизеринг действительно был виновником здесь, как упоминал Рсутфин. Как оказалось, у растровых изображений, которые я заполнял, был Bitmap.Config RGB_565. Копирование этих растровых изображений и установка конфигурации для ARGB_8888 устранили эту проблему сглаживания.

Bitmap bmp = orig.copy(Bitmap.Config.ARGB_8888, true);

Спасибо! * * 1004

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...