Üç gözlemler:
Sen olmak inputImage
ayarlamanız gerekir dan CIImage
senin UIImage
:
: [gaussianBlurFilter setValue:[CIImage imageWithCGImage:[imageView.image CGImage]] forKey:kCIInputImageKey];
Sana örneğin outputImage
kapma görmüyorum
CIImage *outputImage = [gaussianBlurFilter outputImage];
Ve muhtemelen bu CIImage
bir UIImage
dönüştürebilirsiniz.
Yani, hepsi bir araya koyarak: Eğer WWDC 2013 sample code (gerekli ücretli geliştirici abonelik) gidip iOS_UIImageEffects
indirirseniz
CIFilter *gaussianBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
[gaussianBlurFilter setDefaults];
CIImage *inputImage = [CIImage imageWithCGImage:[imageView.image CGImage]];
[gaussianBlurFilter setValue:inputImage forKey:kCIInputImageKey];
[gaussianBlurFilter setValue:@10 forKey:kCIInputRadiusKey];
CIImage *outputImage = [gaussianBlurFilter outputImage];
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[inputImage extent]]; // note, use input image extent if you want it the same size, the output image extent is larger
UIImage *image = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);
Alternatif olarak, daha sonra UIImage+ImageEffects
kategoriyi yakalayabilir. Yani
- (UIImage *)applyLightEffect;
- (UIImage *)applyExtraLightEffect;
- (UIImage *)applyDarkEffect;
- (UIImage *)applyTintEffectWithColor:(UIColor *)tintColor;
- (UIImage *)applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage;
, bulanıklık ve görüntü ve aydınlatma sonra yapabilirsiniz ("buzlu cam" etkisi olduğunu vererek) için:
UIImage *newImage = [image applyLightEffect];
İlginçtir, Apple'ın kod yaptığı birkaç yeni yöntemler sağlar, CIFilter
'u kullanır, bunun yerine vImage high-performance image processing framework'un vImageBoxConvolve_ARGB8888
numaralı telefonunu kullanır. Bu teknik, WWDC 2013 videosunda Implementing Engaging UI on iOS belgesinde gösterilmiştir.
Ben soru iOS 7 hakkında olduğunu biliyorum, ama artık iOS 8'de biri UIBlurEffect
ile herhangi UIView
nesneye bir bulanıklık efekti ekleyebilirsiniz:
UIVisualEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect];
effectView.frame = imageView.bounds;
[imageView addSubview:effectView];
sağlar ekimde hangi kodun olmadığını söyle kasımda yazabilirmiyim? Yazdığınız son kod parçası mı? Büyük bir cevap için teşekkürler btw, ve çok fazla anlamadığım için üzgünüm: D – user2891448
Şimdi son düzenlenmiş cevabınızı gördüm, teşekkürler! – user2891448
Bir uyarı alıyorum, "Kullanılmayan Değişken Görüntü" kodunun son satırı olan – user2891448