我最近试图将代码从这里转换为Swift。但是,无论图像如何,我都会保持白色。这是我的代码:
// Playground - noun: a place where people can play import UIKit extension UIImage { func averageColor() -> UIColor { var colorSpace = CGColorSpaceCreateDeviceRGB() var rgba: [CGFloat] = [0,0,0,0] var context = CGBitmapContextCreate(&rgba, 1, 1, 8, 4, colorSpace, CGBitmapInfo.fromRaw(CGImageAlphaInfo.PremultipliedLast.toRaw())!) rgba CGContextDrawImage(context, CGRectMake(0, 0, 1, 1), self.CGImage) if rgba[3] > 0 { var alpha = rgba[3] / 255 var multiplier = alpha / 255 return UIColor(red: rgba[0] * multiplier, green: rgba[1] * multiplier, blue: rgba[2] * multiplier, alpha: alpha) } else { return UIColor(red: rgba[0] / 255, green: rgba[1] / 255, blue: rgba[2] / 255, alpha: rgba[3] / 255) } } } var img = UIImage(data: NSData(contentsOfURL: NSURL(string: "http://upload.wikimedia.org/wikipedia/commons/c/c3/Aurora_as_seen_by_IMAGE.PNG"))) img.averageColor()
提前致谢。
iOS 9中的CoreImage:使用CIAreaAverage过滤器并传递要平均的整个图像的范围。
另外,它既可以在GPU上运行,也可以作为高度优化的CPU CIKernel运行,因此速度更快。