如何更改UIImage的颜色

How to change color of the UIImage

提问人:Arun 提问时间:2/29/2020 最后编辑:Arun 更新时间:2/29/2020 访问量:121

问:

我正在尝试更改特定 UIImage 的颜色,但是当我在互联网上搜索时,我最终得到了更改 UIImage 的色调颜色的结果,如果我更改色调颜色,它将与给定颜色重叠整个图像这不是我需要的。有人可以帮我做这件事吗?这可能看起来像在 Photoshop 或草图中进行照片编辑。我在下面附上了我到底在寻找什么的图片。

Given Image.

对于(例如)上面的图像,我有一个图层(UIImageView),如果我更改OverCoat图像的颜色,它将变为我设置的颜色。

After changing the color

简单地改变颜色后,它看起来就像上面一样。

有人可以帮我做这件事吗?

iOS Swift iPhone UIImageView UIImpic查看 UIIume

评论


答:

0赞 Ralf Ebert 2/29/2020 #1

实现此目的的一种方法是使用蒙版图像来定义图像的哪些区域应该着色:

Image tinted with mask

这可以通过 完成,请参阅使用蒙版着色 UIImage 以获取示例 Playground。UIGraphicsImageRenderer

import UIKit

let image = UIImage(named: "landscape.jpg")!
let mask = UIImage(named: "mask.png")!

let imageRenderer = UIGraphicsImageRenderer(size: image.size)

let tintedImage = imageRenderer.image { (ctx) in
    let cgContext = ctx.cgContext
    let rect = CGRect(origin: .zero, size: image.size)
    image.draw(in: rect)
    cgContext.saveGState()
    cgContext.translateBy(x: 0, y: rect.size.height)
    cgContext.scaleBy(x: 1.0, y: -1.0);
    cgContext.clip(to: rect, mask: mask.cgImage!)
    cgContext.setBlendMode(.color)
    UIColor.red.setFill()
    cgContext.fill(rect)
    cgContext.restoreGState()
}

评论

0赞 Arun 3/10/2020
我已经尝试过了,但这不是我要找的,在调整 UIImage 的色调时,它似乎不像 UIImage。我看不到外套上的褶皱。图像必须与图像相同,只是应更改颜色。