与 Android 相比,iOS 上的 ARGB 颜色不同
ARGB color is different on iOS in comparison to Android
以#2066E100(ARGB8888)为例,预览颜色Android:
(深绿色)
然而,在iOS中,结果颜色是这样的:(淡黄色)
在我看来,alpha 通道在 iOS 和 Android 中的工作方式不同。所以我的问题是,是否有将 argb 颜色从 Android 转换为 iOS 的通用方案?
我想让 iOS 显示与 Android 相同的颜色。
编辑:更多图片(这次我使用#4066E100)
Android:
iOS:
编辑:添加 swift 代码
if let context = CGBitmapContextCreate(&colors, dim, dim, 8, 4 * dim, CGColorSpaceCreateDeviceRGB(), CGImageAlphaInfo.PremultipliedLast.rawValue | CGBitmapInfo.ByteOrderDefault.rawValue) {
if let cgimage = CGBitmapContextCreateImage(context) {
let uiimage = UIImage.init(CGImage: cgimage)
return uiimage
}
}
我怀疑在这两个平台上处理 ARGB 颜色的方式之间是否存在实际差异。在我看来,这里唯一的区别是它们显示的背景。
快速查看您在没有 alpha 通道的情况下提供的颜色显示为亮绿色。
alpha 通道为 0x20,这使得颜色几乎透明,因此显示该颜色的背景颜色将对整体颜色产生很大影响。
黑色背景表示您看到的深绿色,白色背景表示您看到的亮黄色。
查看每个平台上的背景颜色,确保它们在两个平台上都相同。然后颜色应该看起来相同(不同的显示颜色清晰度无法承受)。
以#2066E100(ARGB8888)为例,预览颜色Android:
然而,在iOS中,结果颜色是这样的:
在我看来,alpha 通道在 iOS 和 Android 中的工作方式不同。所以我的问题是,是否有将 argb 颜色从 Android 转换为 iOS 的通用方案?
我想让 iOS 显示与 Android 相同的颜色。
编辑:更多图片(这次我使用#4066E100)
Android:
iOS:
编辑:添加 swift 代码
if let context = CGBitmapContextCreate(&colors, dim, dim, 8, 4 * dim, CGColorSpaceCreateDeviceRGB(), CGImageAlphaInfo.PremultipliedLast.rawValue | CGBitmapInfo.ByteOrderDefault.rawValue) {
if let cgimage = CGBitmapContextCreateImage(context) {
let uiimage = UIImage.init(CGImage: cgimage)
return uiimage
}
}
我怀疑在这两个平台上处理 ARGB 颜色的方式之间是否存在实际差异。在我看来,这里唯一的区别是它们显示的背景。
快速查看您在没有 alpha 通道的情况下提供的颜色显示为亮绿色。
alpha 通道为 0x20,这使得颜色几乎透明,因此显示该颜色的背景颜色将对整体颜色产生很大影响。
黑色背景表示您看到的深绿色,白色背景表示您看到的亮黄色。
查看每个平台上的背景颜色,确保它们在两个平台上都相同。然后颜色应该看起来相同(不同的显示颜色清晰度无法承受)。