Swift: CIAffine Clapp를 사용하여 가장자리까지 아름다운 흐릿한 이미지 만들기
12672 단어 Swift
CIAffine Clamp 는 무엇입니까?
CIAffineClamp
이미지에 필터를 적용하면 이미지 가장자리(위아래 좌우 1px)를 여러 방향으로 무한히 확장하는 가상 이미지 데이터를 생성할 수 있습니다.필터(다음 그림)를 사용하여 픽셀 주위의 픽셀을 샘플링하여 해당 픽셀의 색상을 결정할 때 이미지 가장자리의 결점을 보완할 수 있습니다.
↓ 이런 놈
↑ 기본적으로 참고 범위를 초과한 부분은 투명색으로 보충한다.
CI 고ussianBlur를 직접 사용하는 경우
왼쪽) 원시, 오른쪽) 모호 처리 결과
그림 가장자리의 색이 옅어지고 모호성이 약하다는 것을 알 수 있다.
출처
// オリジナル画像
let nsImage = NSImage(imageLiteralResourceName: "Test")
guard let imageData = nsImage.tiffRepresentation, let ciImage = CIImage(data: imageData) else { return }
// ガウシアン・フィルタ
guard let blurFilter = CIFilter(name: "CIGaussianBlur") else { return }
blurFilter.setValue(ciImage, forKey: kCIInputImageKey)
blurFilter.setValue(5, forKey: kCIInputRadiusKey)
guard let blurImage = blurFilter.outputImage else { return }
let context = CIContext(options: nil)
guard let resultImage = context.createCGImage(blurImage, from: CGRect(origin: .zero, size: nsImage.size)) else { return }
resultView.image = NSImage(cgImage: resultImage, size: nsImage.size)
CIAffineClamp를 통해 CIGaussianBlur를 간접적으로 사용하는 경우
왼쪽) 원본, 중앙) CIAffine Clamp 시점 결과, 오른쪽) 모호 처리 결과
그림의 가장자리마저 희미해진 것을 알 수 있다.
출처
// オリジナル画像
let nsImage = NSImage(imageLiteralResourceName: "Test")
guard let imageData = nsImage.tiffRepresentation, let ciImage = CIImage(data: imageData) else { return }
// CIAffineClamp
guard let clampFilter = CIFilter(name: "CIAffineClamp") else { return }
clampFilter.setValue(ciImage, forKey: kCIInputImageKey)
clampFilter.setValue(CGAffineTransform(scaleX: 1.0, y: 1.0), forKey: kCIInputTransformKey)
guard let clampImage = clampFilter.outputImage else { return }
let context = CIContext(options: nil)
let rect = CGRect(origin: CGPoint(x: -25, y: -25), size: CGSize(width: nsImage.size.width + 50, height: nsImage.size.height + 50))
guard let cgImage = context.createCGImage(clampImage, from: rect) else { return }
imageView.image = NSImage(cgImage: cgImage, size: rect.size)
// ガウシアン・フィルタ
guard let blurFilter = CIFilter(name: "CIGaussianBlur") else { return }
blurFilter.setValue(clampImage, forKey: kCIInputImageKey)
blurFilter.setValue(5, forKey: kCIInputRadiusKey)
guard let blurImage = blurFilter.outputImage else { return }
guard let resultImage = context.createCGImage(blurImage, from: CGRect(origin: .zero, size: nsImage.size)) else { return }
resultView.image = NSImage(cgImage: resultImage, size: nsImage.size)
감상
CIFilter는 매우 잘 조합되어 있어 고속 영상 처리를 효과적으로 할 수 있으니 총포를 사용하십시오.
Reference
이 문제에 관하여(Swift: CIAffine Clapp를 사용하여 가장자리까지 아름다운 흐릿한 이미지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kyome/items/7c7aca4578f8720fb81b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
![](https://s1.md5.ltd/image/ff6c2c5361479771baaea1dba1b86f83.png)
왼쪽) 원시, 오른쪽) 모호 처리 결과
그림 가장자리의 색이 옅어지고 모호성이 약하다는 것을 알 수 있다.
출처
// オリジナル画像
let nsImage = NSImage(imageLiteralResourceName: "Test")
guard let imageData = nsImage.tiffRepresentation, let ciImage = CIImage(data: imageData) else { return }
// ガウシアン・フィルタ
guard let blurFilter = CIFilter(name: "CIGaussianBlur") else { return }
blurFilter.setValue(ciImage, forKey: kCIInputImageKey)
blurFilter.setValue(5, forKey: kCIInputRadiusKey)
guard let blurImage = blurFilter.outputImage else { return }
let context = CIContext(options: nil)
guard let resultImage = context.createCGImage(blurImage, from: CGRect(origin: .zero, size: nsImage.size)) else { return }
resultView.image = NSImage(cgImage: resultImage, size: nsImage.size)
CIAffineClamp를 통해 CIGaussianBlur를 간접적으로 사용하는 경우
왼쪽) 원본, 중앙) CIAffine Clamp 시점 결과, 오른쪽) 모호 처리 결과
그림의 가장자리마저 희미해진 것을 알 수 있다.
출처
// オリジナル画像
let nsImage = NSImage(imageLiteralResourceName: "Test")
guard let imageData = nsImage.tiffRepresentation, let ciImage = CIImage(data: imageData) else { return }
// CIAffineClamp
guard let clampFilter = CIFilter(name: "CIAffineClamp") else { return }
clampFilter.setValue(ciImage, forKey: kCIInputImageKey)
clampFilter.setValue(CGAffineTransform(scaleX: 1.0, y: 1.0), forKey: kCIInputTransformKey)
guard let clampImage = clampFilter.outputImage else { return }
let context = CIContext(options: nil)
let rect = CGRect(origin: CGPoint(x: -25, y: -25), size: CGSize(width: nsImage.size.width + 50, height: nsImage.size.height + 50))
guard let cgImage = context.createCGImage(clampImage, from: rect) else { return }
imageView.image = NSImage(cgImage: cgImage, size: rect.size)
// ガウシアン・フィルタ
guard let blurFilter = CIFilter(name: "CIGaussianBlur") else { return }
blurFilter.setValue(clampImage, forKey: kCIInputImageKey)
blurFilter.setValue(5, forKey: kCIInputRadiusKey)
guard let blurImage = blurFilter.outputImage else { return }
guard let resultImage = context.createCGImage(blurImage, from: CGRect(origin: .zero, size: nsImage.size)) else { return }
resultView.image = NSImage(cgImage: resultImage, size: nsImage.size)
감상
CIFilter는 매우 잘 조합되어 있어 고속 영상 처리를 효과적으로 할 수 있으니 총포를 사용하십시오.
Reference
이 문제에 관하여(Swift: CIAffine Clapp를 사용하여 가장자리까지 아름다운 흐릿한 이미지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kyome/items/7c7aca4578f8720fb81b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// オリジナル画像
let nsImage = NSImage(imageLiteralResourceName: "Test")
guard let imageData = nsImage.tiffRepresentation, let ciImage = CIImage(data: imageData) else { return }
// CIAffineClamp
guard let clampFilter = CIFilter(name: "CIAffineClamp") else { return }
clampFilter.setValue(ciImage, forKey: kCIInputImageKey)
clampFilter.setValue(CGAffineTransform(scaleX: 1.0, y: 1.0), forKey: kCIInputTransformKey)
guard let clampImage = clampFilter.outputImage else { return }
let context = CIContext(options: nil)
let rect = CGRect(origin: CGPoint(x: -25, y: -25), size: CGSize(width: nsImage.size.width + 50, height: nsImage.size.height + 50))
guard let cgImage = context.createCGImage(clampImage, from: rect) else { return }
imageView.image = NSImage(cgImage: cgImage, size: rect.size)
// ガウシアン・フィルタ
guard let blurFilter = CIFilter(name: "CIGaussianBlur") else { return }
blurFilter.setValue(clampImage, forKey: kCIInputImageKey)
blurFilter.setValue(5, forKey: kCIInputRadiusKey)
guard let blurImage = blurFilter.outputImage else { return }
guard let resultImage = context.createCGImage(blurImage, from: CGRect(origin: .zero, size: nsImage.size)) else { return }
resultView.image = NSImage(cgImage: resultImage, size: nsImage.size)
CIFilter는 매우 잘 조합되어 있어 고속 영상 처리를 효과적으로 할 수 있으니 총포를 사용하십시오.
Reference
이 문제에 관하여(Swift: CIAffine Clapp를 사용하여 가장자리까지 아름다운 흐릿한 이미지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kyome/items/7c7aca4578f8720fb81b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)