Why won't the average color yield to a result other than black?
我正在尝试根据标签后面图像的平均颜色设置标签的颜色。如果平均颜色为深色,则将
我在这里按照教程学习了一般的颜色逻辑,看起来似乎非常不错。然后,我在这里按照公认的答案进行了逻辑设置,即将其设置为白色还是黑色,这是我认为问题所在。出于某种原因,无论图像是黑色还是白色,文本颜色始终为黑色。
这是我在Swift中的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var averageColor = thumbnailImage.image!.averageColor() var red = 0.0 as CGFloat, green = 0.0 as CGFloat, blue = 0.0 as CGFloat, alpha = 0.0 as CGFloat averageColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha) let threshold = 150 var bgDelta = ((red * 0.299) + (green * 0.587) + (blue * 0.114)) if (255 - Double(bgDelta) > Double(threshold)) { self.eventName.textColor = .blackColor() println("black") } else { println("white") self.eventName.textColor = .whiteColor() } |
注意:我尝试将阈值更改为无济于事。似乎产生结果的唯一值是255,这是最大值。
1 2 | averageColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha) var bgDelta = ((red * 0.299) + (green * 0.587) + (blue * 0.114)) |
还会计算该范围内的值
阈值也必须缩放到此范围,例如
1 2 | let threshold = CGFloat(150.0/255.0) if 1.0 - bgDelta > threshold { ... } |