检测 UIImage 是浅色还是深色

Detect if UIImage is light or dark

我需要一些帮助来创建一个智能检测器,它可以检测 UIImage 是亮的还是暗的,这样我就可以在 UILabel 上使用 textColor相反的颜色,黑色或白色。

这可以在几行内完成,还是我需要一个硬核 CoreImage 操作?

谢谢!

如果您有随机图像,则必须检查所有像素。你不能只检查一些像素 - 作为一个反例,你可以想象一个全白的图像只有一些黑色像素并且你只检查它们。那会给你不好的结果。

我能想到的最简单的解决方案是将图像转换为灰度,然后遍历所有像素,计算平均灰度。然后你可以决定平均值是更接近白色还是更接近黑色。

您还可以在处理之前缩小图像(将图像绘制成更小的图像)。

查看图像是 "dark" 还是 "light" 通常无法正常工作。您最终放置文本的部分可能同时具有明暗部分,即使整个图像可能被认为是其中之一。

向随机图片添加文本的常见解决方案是为白色文本添加部分透明的黑色背景(或为黑色文本添加部分透明的白色背景)。