代码之家  ›  专栏  ›  技术社区  ›  János

UIImage的一部分有多亮?

  •  1
  • János  · 技术社区  · 8 年前

    在零件上贴标签 UIImageView . 如果图像太亮,白色文字无法阅读。有没有简单的方法来检测图像的亮度?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Matic Oblak    8 年前

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

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

    我建议你试试笔划,投下阴影或添加背景。例如,可以在标签上显示白色文本,并使用半透明的黑色背景色和一些层角半径。除了最明亮的图像和文本外,所有图像和文本上几乎看不到背景。