我正在开发彩色应用程序。 其中,App有图像,我们必须用选定的颜色为它着色。
我尝试了很多东西来完成应用。 但是,却没有完美的方法来填充图像特定部分的颜色。
我尝试使用此代码获取像素颜色。
func getPixelColor(pos: CGPoint) -> UIColor {
let pixelData = self.cgImage!.dataProvider!.data
let data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)
let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4
let r = CGFloat(data[pixelInfo]) / CGFloat(255.0)
let g = CGFloat(data[pixelInfo+1]) / CGFloat(255.0)
let b = CGFloat(data[pixelInfo+2]) / CGFloat(255.0)
let a = CGFloat(data[pixelInfo+3]) / CGFloat(255.0)
return UIColor(red: r, green: g, blue: b, alpha: a)
}
以上代码工作,它会检测像素颜色。
但是在上面的代码之后,尝试在图像的特定触摸部分填充颜色。
也使用了洪水算法,但它没有完全填满特定部分。
尝试使用Masking方法填充图像的特定部分。
我使用下面的代码填充触摸像素上的颜色,如上图所示,您会看到红色,显示触摸位置并将该像素颜色更改为红色。
UIGraphicsBeginImageContextWithOptions((rect?.size)!, false, (images?.scale)!)
let c = UIGraphicsGetCurrentContext()
images?.draw(in: rect!)
c!.setFillColor(UIColor.red.cgColor)
c!.setBlendMode(CGBlendMode.normal)
c!.fill(CGRect(x: (location?.x)!, y: (location?.y)!, width: 10, height:10))
let result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
img.image = result
任何人都有解决方案。 然而,我只能在触摸区域像素上填充颜色,但是,我们必须使用选定的颜色在特定的触摸部分上进行颜色处理。还要注意颜色应该填充在边界颜色之内或之外的边界内。
如果有人有示例代码,请分享。
谢谢。
答案 0 :(得分:1)
使用此项目:https://github.com/Chintan-Dave/UIImageScanlineFloodfill
这里我们设置了限制按钮。所以默认情况下它是10。 然后将所有iPhone的图像尺寸设置为300x300,将iPad设置为600x600。它对我来说很完美。 保持图像质量完美。
希望这个答案可以帮到你。