>> DKLiveBlur
こんな感じ。
この辺り、使い方も参考になる。
DKLivewBlurView.m
- (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur {
:
vImage_Buffer inBuffer, outBuffer;
vImage_Error error;
void *pixelBuffer;
CGDataProviderRef inProvider = CGImageGetDataProvider(img);
CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);
inBuffer.width = CGImageGetWidth(img);
inBuffer.height = CGImageGetHeight(img);
inBuffer.rowBytes = CGImageGetBytesPerRow(img);
inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);
pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img));
:
error = vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer, NULL,
0, 0, boxSize, boxSize, NULL,
kvImageEdgeExtend);
:
オリジナル画像をセットしたタイミングで非同期にこれを呼び出してあらかじめぼかし画像を作っておく。- (void)setOriginalImage:(UIImage *)originalImage {
_originalImage = originalImage;
self.image = originalImage;
dispatch_queue_t queue = dispatch_queue_create("Blur queue", NULL);
dispatch_async(queue, ^ {
UIImage *blurredImage = [self blurryImage: self.originalImage withBlurLevel: self.initialBlurLevel];
dispatch_async(dispatch_get_main_queue(), ^{
self.backgroundImageView.alpha = 0.0;
self.backgroundImageView.image = blurredImage;
});
});



