使用copyPixelsToBuffer时Android如何应用alpha通道?
相关主题(尚未提供解决方案): 访问ARGB_8888 Android Bitmap中的原始数据
简而言之:当使用copyPixelFromBuffer
和copyPixelsToBuffer
,Android已经在RGB通道上应用了Alpha通道。
我需要将其转换为原始的ARGB值,反之亦然。 我不知道Android如何应用它。 你能告诉我配方吗?
Android以alpha预乘forms存储位图数据。 换句话说,复制数据时不应用alpha值,它一直被应用。
要转换为预乘forms,请将颜色分量与规范化的alpha值相乘,如下所示:
redPremultiplied = red * normalizedAlpha greenPremultiplied = green * normalizedAlpha bluePremultiplied = blue * normalizedAlpha alphaPremultiplied = alpha
哪里
red = green = blue = alpha = normalizedAlpha = alpha / 255
要将预乘alpha转换为规范forms,请将预乘组件与规范化alpha分开:
red = redPremultiplied / normalizedAlpha green = greenPremultiplied / normalizedAlpha blue = bluePremultiplied / normalizedAlpha alpha = alphaPremultiplied
但一定要注意normalizedAlpha = 0! 您应该注意, Bitmap.copyPixelsToBuffer()
和Bitmap.copyPixelsFromBuffer()
处理的数据可以是任何格式。 使用Bitmap.getPixels()
和Bitmap.setPixels()
更安全,因为API保证了这些函数处理的数据格式。 特别是,您不必担心预乘和非预乘alpha,因为这些函数会为您处理。
- 用于android的解析仪表板中的“推送发送0”
- Android Tab Fragment(Eclipse ApI 22)中不推荐使用ActionBarActivity和ActionBar.TabListener
- 尝试清除它后,Android SurfaceView / Canvas闪烁
- RealmObjects中的自定义方法…解决方案?
- 简单的webservice示例tomEE无法正常工作
- 如何在Android Activity中扩展ListActivity AppCompatActivity的位置
- 使用API21进行编译时出现UnsatisfiedLinkError
- 如何将二进制数据转换为图像?
- 将解密文件读入ZipInputStream有时会截断第一个文件