Я ищу решение применить цветовой оттенок к изображению без изменения разрешения и размера.Я создаю пользовательские фильтры, используя значения RGB и CIColorControls
.Я могу применять различные цветовые элементы управления (например, яркость, контрастность и насыщенность).
У меня есть значения, Контраст, Яркость, Насыщенность как (110%., 110%, 130%) И я применил ихработает нормально.Это мой код:
func applyCustomValues(image: UIImage, brightness: Double, contrast: Double, saturation: Double) -> UIImage{
let beginImage = CIImage(cgImage: image.cgImage!)
let parameters = [
"inputContrast": NSNumber(value: contrast),
"inputBrightness": NSNumber(value: brightness),
"inputSaturation": NSNumber(value: saturation),
]
let outputImage = beginImage.applyingFilter("CIColorControls", parameters: parameters)
let context = CIContext(options: nil)
let outputCGImage = context.createCGImage(outputImage, from: outputImage.extent)
return UIImage(cgImage: outputCGImage)
}
И значения RGB у меня R = 243, G = 106, B = 188.
Я хотел бы применить все эти значения на изображениии ожидаемый результат как подобное требование
Чтобы применить цвет оттенка (RGB) Это мой код:
func tint(image: UIImage, color: UIColor) -> UIImage
{
let ciImage = CIImage(image: image)
let filter = CIFilter(name: "CIMultiplyCompositing")
filter?.setDefaults()
let colorFilter = CIFilter(name: "CIConstantColorGenerator")
let ciColor = CIColor(color: color)
colorFilter?.setValue(ciColor, forKey: kCIInputColorKey)
let colorImage = colorFilter?.outputImage
filter?.setValue(colorImage, forKey: kCIInputImageKey)
filter?.setValue(ciImage, forKey: kCIInputBackgroundImageKey)
let context = CIContext(options: nil)
let cgImage = context.createCGImage(filter!.outputImage!, from: (ciImage?.extent)!)
return UIImage(cgImage: cgImage!)
}
Чтобы применить Tint и CIColorControls,
let tintImage = tint(image:orinalImage, color: UIColor.getTintColor(r: 255/255, g: 131/255, b: 0/255, alpha: 1))
let colorControlImage = applyCustomValues(image: tintImage, brightness: 0.11, contrast: 1.10, saturation: 1.3)
Возвращает выходное изображение, приведенное ниже:
Исходное изображение:
ожидаемое изображение на выходе Пожалуйста, не обращайте внимания на масштаб изображения
Пожалуйста, исправьте меня, если я ошибаюсь, как правильно добиться этого.