Как изменить цвет UIImage - PullRequest
       18

Как изменить цвет UIImage

0 голосов
/ 29 февраля 2020

Я пытаюсь изменить цвет определенного UIImage, но когда я ищу в inte rnet, я получаю результат изменения цвета оттенка UIImage. Если я изменю цвет оттенка, он будет перекрывать все изображение с Данный цвет это не то, что мне нужно. Может кто-нибудь, пожалуйста, помогите мне сделать это? Это может выглядеть как редактирование фотографий в фотошопе или скетче. Я приложил изображение ниже, что именно я ищу.

Given Image.

Для (например) вышеуказанного изображения у меня есть слой (UIImageView), если я изменю цвет изображения OverCoat, который изменит цвет на тот, который я установил.

After changing the color

После изменения цвета просто он будет выглядеть, как указано выше.

Может кто-нибудь, пожалуйста, помогите мне сделать это.

1 Ответ

0 голосов
/ 29 февраля 2020

Один из способов достижения sh - использовать маску изображения, которая определяет, какие области изображения должны быть окрашены:

Image tinted with mask

Это можно сделать с помощью UIGraphicsImageRenderer, см. Тонирование UIImage с маской для примера игровой площадки.

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()
}
...