образное изображение. src = "https://i.sstatic.net/mh98yopb.png"/>
В начале видео человек сначала дегарганирует изображение, чтобы сделать его серого. Затем создает копию этого слоя. Затем отключает красный канал на этом слое. Затем немного сдвигает его влево, чтобы получить этот взгляд на отметку 55 секунды:
Это должно быть легко с Cifilter . Я сделал ниже: < /p>
Код: Выделить всё
if let image = UIImage(named: "demo13"), let editted = applyGlitchEffect(to: image) {
imageView.image = editted
}
func applyGlitchEffect(to image: UIImage) -> UIImage? {
guard let ciImage = CIImage(image: image) else { return nil }
let context = CIContext(options: nil)
let grayscaleFilter = CIFilter(name: "CIColorControls", parameters: [
kCIInputImageKey: ciImage,
kCIInputSaturationKey: 0.0
])
let noRedChannel = CIFilter(name: "CIColorMatrix", parameters: [
kCIInputImageKey: grayscaleFilter?.outputImage as Any,
"inputRVector": CIVector(x: 0, y: 0, z: 0, w: 0)
])
let shifted = noRedChannel?.outputImage?.transformed(by: CGAffineTransform(translationX: -20, y: 0))
let blended = CIFilter(name: "CIScreenBlendMode")
blended?.setValue(shifted, forKey: kCIInputImageKey)
blended?.setValue(grayscaleFilter?.outputImage as Any, forKey: kCIInputBackgroundImageKey)
if let finalOutput = blended?.outputImage, let cgImage = context.createCGImage(finalOutput, from: ciImage.extent) {
return UIImage(cgImage: cgImage)
}
return nil
}
Как вы видите, мой результат аналогичен одному в видео. Тем не менее, мой образ по какой -то причине имеет голубовато -оттенок. Принимая во внимание, что в видео представлен серого цвета с переключенными красными и черными по краям. I did try a few other blend modes but didn't get similar result.
I looked up what blend mode Photoshop uses and according to this:
https://helpx.adobe.com/photoshop/using ... modes.html
the default is "Normal: Edits or paints each pixel to make it цвет результата. Что я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/795 ... e-gives-di
Мобильная версия