对于我的应用程序,我使用用户选择的图像作为背景,上面的文本使用kCGBlendingModeOverlay混合。它在某些图像上很好,但在明亮的图像上文字不清晰。我知道Apple在iOS 7中使用一种算法来根据下面的内容更改文本颜色,但我的问题是如何实现它。我到处搜索但到目前为止还没有发现任何相关内容。有没有人知道我可以从哪里开始?
由于
答案 0 :(得分:0)
我们使用这种灰度计算,基本上以与人眼相同的方式对颜色进行加权 眼睛对不同的颜色具有不同的灵敏度,因此绿色的N个光子将比N个蓝色光子更亮。
lColorIndex := ( (r * 77 + g * 151 + b * 28) shr 8 );
if (lColorIndex < 130) then
ForegroundColor := clWhite
else
ForegroundColor := clBlack;
这只是一个像素计算,所以你必须平均你正在看的区域(平均R,G,B 之前计算当然)
背景:
我们看到的亮度或多或少:
v = 59%的绿色,30%的红色和11%的蓝色通道
=(30 * r + 59 * g + 11 * b)div 100
接近:
v =(77 * r + 151 * g + 28 * b)div 256
v =(77 * r + 151 * g + 28 * b)shr 8
它在计算机世界中计算得更快。