基于背景图像的文本颜色

9

我的视图有一个带有文本标签覆盖的背景图片。怎样以最佳/良好的动态方式来确定文本颜色,使其可读性更高(目前,我只对确定文本颜色应该是深还是浅感兴趣)。

谢谢:)

2个回答

14

使用woz提到的链接查找平均颜色

然后对您的文本进行样式设置

CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0;
[averageColor getRed:&red green:&green blue:&blue alpha:&alpha];

int threshold = 105;
int bgDelta = ((red * 0.299) + (green * 0.587) + (blue * 0.114));

UIColor *textColor = (255 - bgDelta < threshold) ? [UIColor blackColor] : [UIColor whiteColor];

类似于这样的内容。

您也可以使用上面的链接从图像获取UIColor,并使用Matt的类别为UIColor获取浅色或深色。


谢谢,老兄,它起作用了!顺便说一下,在这个问题https://dev59.com/bXE85IYBdhLWcg3w_I78中找到了提到的公式。 - Ed Liss
Matts的类别太大了,对我来说无法正常工作(黑色文本在红色背景上)。最好使用stackoverflow.com/a/18303674/5790492 - Nik Kov刚刚编辑 - Nike Kov

7

我的第一个想法是找到图像的平均颜色,并根据此设置文本颜色。当然,图像可能包含明亮和暗淡的区域,因此您选择的颜色有时可能无法阅读。

要找到图像的平均颜色,请尝试以下操作:

http://www.bobbygeorgescu.com/2011/08/finding-average-color-of-uiimage/

一旦获得了平均颜色,检查红、绿和蓝色的值。如果它们足够高(无论您如何定义),则使用深色文本;否则使用浅色文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接