UIImage 的一部分有多亮?

Posted

技术标签:

【中文标题】UIImage 的一部分有多亮?【英文标题】:How bright is part of UIImage? 【发布时间】:2017-11-15 13:44:10 【问题描述】:

UIImageView 的一部分上添加标签。如果图像太亮,白色文字无法阅读。有什么简单的方法可以检测图像的亮度部分吗?

【问题讨论】:

【参考方案1】:

至少对于处理器来说,没有“简单”的方法可以做到这一点。对于开发人员来说,最容易访问图像数据的原始 RGBA 缓冲区并找出平均颜色是什么。然后将该颜色转换为 HSV 并检查饱和度以确定亮度。您甚至可以使用 GPU 来加快速度; openGL 应该是完美的。

但在你走得太远之前:结果很可能不是你想要的。总有一些情况会使您的文本不可读,无论它们是什么颜色。考虑一下您有一个白色文本,一旦图像太亮就会将其转换为黑色。但是图像完全由黑白条纹组成,因此每个奇数字母都在白色条纹上,其余字母在黑色上。文字简直无法阅读。

我建议您尝试使用描边、阴影或添加背景。例如,您可以在标签上使用白色文本,并使用带有一些图层角半径的半透明黑色背景颜色。几乎看不到背景,但最亮的图像和文本始终可读。

【讨论】:

谢谢,中风了 :)

以上是关于UIImage 的一部分有多亮?的主要内容,如果未能解决你的问题,请参考以下文章

在UIImage中按坐标截出新的UIImage的完美代码(网上绝大部分都有问题!)

清除部分 UIImage

在 UIScrollView 中获取 UIImage 可见部分的正确坐标

将大 UIImage 比例下载到 UIImageView

如何捕获tableView可见部分的UIImage

从文件加载的 UIImage 部分是黑色的