Android 2.2 искажает цвета изображения? - PullRequest
4 голосов
/ 27 октября 2010

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

Теперь на Android 1.5 с этим проблем нет. Я помещаю эти изображения в каталог / res / drawable, загружаю их с BitmapFactory в объект Bitmap и использую его для получения цвета нужных пикселей. Например. Пиксель (100, 50) имеет цвет RGB (100, 1, 100).

На Android 2.2 tho, та же самая процедура приводит к изменению цвета (для одного и того же пикселя), поэтому я получаю RGB (99, 3, 102) / RGB (101, 2, 99) / и т. Д. Для одного и того же (100, 50) пиксель. Я проверил разрешение объекта Bitmap, похоже, он не масштабируется.

Может кто-нибудь объяснить, почему я получаю искаженные значения цвета?

Ответы [ 4 ]

2 голосов
/ 27 октября 2010

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

В любом случае, вот код, который я сейчас использую:

BitmapFactory.Options opt = new BitmapFactory.Options();
        opt.inDither=false;
        opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
        Bitmap mask = BitmapFactory.decodeResource(getResources(), R.drawable.picture, opt);
1 голос
/ 27 октября 2010

Создайте себе растровое изображение, полностью совпадающее с цветом рассматриваемого пикселя.Сделайте размер этого растрового изображения таким же, как у вашего текущего.Загрузите его и проверьте значения RGB того же пикселя (или любого пикселя), с которым у вас проблемы.

Это должно сказать вам, является ли ваша проблема масштабированием, как я думаю, илипроблема в переводе цвета.

0 голосов
/ 23 июля 2011

Мои устройства 2.3 (Nexus One и S) работали нормально, без установки «opt.inPreferredConfig», но, похоже, 2.2 требуется для точных RGB.

0 голосов
/ 27 октября 2010

Если вы не можете быстро найти ответ, моя прагматичная команда спросит, как трудно разобрать .png самостоятельно, чтобы получить полностью детерминированные результаты, не зависящие от каких-либо изменений в платформе.

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