Проблемы с битовой глубиной на растровых изображениях и экранах (белый не белый) - PullRequest
1 голос
/ 02 октября 2011

У меня есть прозрачное изображение PNG, представляющее значок Bluetooth с голубым свечением, экспортированный из фотошопа:

enter image description here

В HTC Desire создается простой просмотр изображений, иPNG используется в качестве растрового изображения.Если фон вокруг изображения - белый, между нюансами есть различия.Если фон черный, то различия скрыты.enter image description here

Если я использую ADB для захвата экрана, проблема не видна: enter image description here

Возможные причины: экран использует более высокую скорость в битах, чем длярастровое изображение.Например.RGB24 против RGB16.При этом экран имеет более широкое количество нюансов для белого, чем это возможно для растрового кодирования.При отображении пиксели растрового изображения аппроксимируются новыми требованиями к глубине в битах, но не могут должным образом соответствовать нюансам фона из-за используемых приближений.Например.RGB16-> RGB24 будет означать C24 = 255 * C16 / 31.

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

Вопрос в том, как это исправить?

Я уже пытался загрузить растровое изображение с такими параметрами, как: resample.inPreferredConfig = Config.ARGB_8888;Но бесполезно.

Мне просто нужно отобразить прозрачное изображение, такое как значок с эффектами GFX: тени, свечение и т. Д. Я также был бы рад использовать маску в градациях серого (черный => белыймаска для обозначения прозрачности пикселей, но также не нашла пути для этого).

Спасибо за ваше время!

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Вы можете просто установить формат окна перед настройкой contentView в Activity.

getWindow().setFormat(PixelFormat.RGBA_8888);
0 голосов
/ 03 сентября 2014

Это, вероятно, не имеет ничего общего с битовой глубиной.

Описанный вами "беловатый квадрат" также находится на скриншоте.Возможно, вы не увидите его на мониторе компьютера, если ваш монитор не откалиброван должным образом.

...