我需要确定选定的UIColor(由用户选择)是暗还是亮,因此我可以更改位于该颜色顶部的文本行的颜色,以提高可读性.
这是Flash/Actionscript中的一个示例(带演示):http://web.archive.org/web/20100102024448/http://theflashblog.com/?p = 173
有什么想法吗?
干杯,安德烈
UPDATE
感谢大家的建议,这是工作代码:
- (void) updateColor:(UIColor *) newColor
{
const CGFloat *componentColors = CGColorGetComponents(newColor.CGColor);
CGFloat colorBrightness = ((componentColors[0] * 299) + (componentColors[1] * 587) + (componentColors[2] * 114)) / 1000;
if (colorBrightness < 0.5)
{
NSLog(@"my color is dark");
}
else
{
NSLog(@"my color is light");
}
}
Run Code Online (Sandbox Code Playgroud)
再次感谢 :)
我想根据背景图像更改文本(和图标)颜色以提高可见性。
我试过: 使用palette_generator包,检查背景图像的主色,并 从flutter_statusbarcolor包中使用WhiteForgroundForColor函数(返回一个bool)为我的文本(和图标)颜色选择黑色或白色。
问题:有时主色会变成空。在我的测试中,这种情况发生在黑色和白色,我不知道有什么方法可以找出哪一种。
Future<bool> useWhiteTextColor(String imageUrl) async {
PaletteGenerator paletteGenerator =
await PaletteGenerator.fromImageProvider(
NetworkImage(imageUrl),
// Images are square
size: Size(300, 300),
// I want the dominant color of the top left section of the image
region: Offset.zero & Size(40, 40),
);
Color dominantColor = paletteGenerator.dominantColor?.color;
// Here's the problem
// Sometimes dominantColor returns null
// With black and white background colors in my tests
if (dominantColor == null) print('Dominant Color null'); …Run Code Online (Sandbox Code Playgroud)
我有一个背景图片,上面有一些UILabel.
用户可以将背景图像更改为任何颜色,而我必须确定哪种颜色可以更好地用于UILabels,白色还是黑色?
最好的例子是iOS 7 Home Screen.
当背景暗时,文本变为白色,反之亦然.
但是,当背景介于黑暗和光线之间时,例如:半图像100%白色,另一半100%黑色 - 文本变为白色,并添加阴影效果,因此它将是可读的.
我一直面临的问题是如何指出这是什么类型的图像?
天黑了吗?这很轻吗?它是在暗光之间吗?
我怎样才能将这一点变为人类对代码的清晰度?
我明显想自己编写代码,但我不知道.
我开始学习对比度和亮度,但我无法将各个部分粘在一起.
我应该从哪里开始?非常感谢!