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.)
왼쪽) 원시, 오른쪽) 모호 처리 결과
그림 가장자리의 색이 옅어지고 모호성이 약하다는 것을 알 수 있다.
출처
// オリジナル画像
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.)