Android 位图和屏幕上的位深度问题(白色不是白色)

Android 位图和屏幕上的位深度问题(白色不是白色),android,bitmap,rendering,screen,bit-depth,Android,Bitmap,Rendering,Screen,Bit Depth,我有一个透明的PNG图像,代表一个蓝色发光的蓝牙图标,从photoshop导出: 在HTC Desire上,创建一个简单的imageview,并将PNG用作位图。 如果imageview周围的背景为白色,则细微差别之间存在差异。如果背景为黑色,则会隐藏差异。 如果我使用ADB进行屏幕捕获,则问题不可见: 可能的原因: 屏幕使用的比特深度速率高于位图使用的比特深度速率。例如RGB24与RGB16。通过这样做,屏幕上白色的细微差别比位图编码的细微差别更多。显示时,位图的像素近似于新的位深度要求

我有一个透明的PNG图像,代表一个蓝色发光的蓝牙图标,从photoshop导出:

在HTC Desire上,创建一个简单的imageview,并将PNG用作位图。 如果imageview周围的背景为白色,则细微差别之间存在差异。如果背景为黑色,则会隐藏差异。

如果我使用ADB进行屏幕捕获,则问题不可见:

可能的原因: 屏幕使用的比特深度速率高于位图使用的比特深度速率。例如RGB24与RGB16。通过这样做,屏幕上白色的细微差别比位图编码的细微差别更多。显示时,位图的像素近似于新的位深度要求,但由于使用了近似值,因此无法正确匹配背景细微差别。例如,RGB16->RGB24意味着C24=255*C16/31

如果我使用屏幕捕获软件,位深度可能会缩小到更窄的位深度值(RGB16),因此所有细微差别都会合并在一起,并近似于更简单的16位颜色。这就是为什么我用照相机来说明这个问题

问题是如何解决这个问题

我已经尝试加载带有以下参数的位图: resample.inPreferredConfig=Config.ARGB_8888; 但是没有用

我只需要显示一个透明的图像,比如一个带有GFX效果的图标:阴影、光晕等。我也很乐意使用灰度遮罩(黑色=>白色遮罩表示像素透明度,但也没有找到方法)


谢谢你的时间

在活动中设置contentView之前,只需设置窗口格式即可

getWindow().setFormat(PixelFormat.RGBA_8888);

在活动中设置contentView之前,可以先设置窗口格式

getWindow().setFormat(PixelFormat.RGBA_8888);

这可能与钻头深度无关


你描述的“白色正方形”也在你的截图中。如果您的显示器没有正确校准,您可能无法在计算机显示器上看到它

这可能与位深度无关


你描述的“白色正方形”也在你的截图中。如果您的显示器没有正确校准,您可能无法在计算机显示器上看到它

对不起,我看不出你说的细微差别有什么变化。你能说得更具体一点吗?在第二张照片(用相机拍摄的照片,而不是截图)中,你可以在两个蓝牙图标周围看到不同的白色细微差别。蓝牙图标周围似乎有一个白色的正方形,而不是一个很好的透明背景。对不起,我没有看到你所说的细微差别发生了变化。你能说得更具体一点吗?在第二张照片(用相机拍摄的照片,而不是截图)中,你可以在两个蓝牙图标周围看到不同的白色细微差别。蓝牙图标周围似乎有一个白色的正方形,而不是一个漂亮的透明背景。不幸的是,这也没有帮助。不幸的是,这也没有帮助。这是一个老问题,现在我有一个视网膜显示器比我以前用的好得多。这个问题似乎是约翰发现的,所以我把它作为一个答案。这是一个老问题,现在我有一个视网膜监视器,比我以前使用的要好得多。这个问题似乎是约翰发现的,所以我把它作为一个答案。