9

私のiPhoneアプリケーションには、白黒がありUIImageます。その画像をぼかす必要があります(ガウスぼかしで十分です)。

iPhoneは、影を描くときに画像をぼかす方法を明確に知っています。

しかし、APIに関連するものは何も見つかりませんでした。

ハードウェアアクセラレーションを使用せずに、手作業でぼかしを行う必要がありますか?

4

5 に答える 5

15

これを試してください(ここにあります):

@interface UIImage (ImageBlur)
- (UIImage *)imageWithGaussianBlur;
@end

@implementation UIImage (ImageBlur)
- (UIImage *)imageWithGaussianBlur {
    float weight[5] = {0.2270270270, 0.1945945946, 0.1216216216, 0.0540540541, 0.0162162162};
    // Blur horizontally
    UIGraphicsBeginImageContext(self.size);
    [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[0]];
    for (int x = 1; x < 5; ++x) {
        [self drawInRect:CGRectMake(x, 0, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[x]];
        [self drawInRect:CGRectMake(-x, 0, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[x]];
    }
    UIImage *horizBlurredImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    // Blur vertically
    UIGraphicsBeginImageContext(self.size);
    [horizBlurredImage drawInRect:CGRectMake(0, 0, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[0]];
    for (int y = 1; y < 5; ++y) {
        [horizBlurredImage drawInRect:CGRectMake(0, y, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[y]];
        [horizBlurredImage drawInRect:CGRectMake(0, -y, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[y]];
    }
    UIImage *blurredImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    //
    return blurredImage;
}

そして、次のように使用します。

UIImage *blurredImage = [originalImage imageWithGaussianBlur];

より強いぼかしを得るには、この効果を 2 回以上適用するだけです :)

于 2012-02-05T10:10:00.817 に答える
6

過去に同じ問題が発生した後、このライブラリを確認してください:

https://github.com/tomsoft1/StackBluriOS

非常に使いやすい:

UIImage *newIma=[oldIma stackBlur:radius];
于 2012-02-07T09:43:18.783 に答える
2

CIFilter を介してジョブにアプローチすることを検討してください。

iOS 向けコア イメージ フィルタの開発

于 2015-03-26T09:32:38.783 に答える
0

基本的に、ぼかし効果を実装するための簡単なAPIはありません。それを達成するには、ピクセルを処理する必要があります。

iPhoneは、ぼかしではなくグラデーションを使用して影を描きます。

于 2010-11-20T13:06:39.643 に答える
0

画像をぼかすには、畳み込み行列を使用します。畳み込み行列を適用するためのサンプルコードを次に示します。また、畳み込み行列の概要といくつかのサンプル行列(ぼかしとガウスぼかしを含む)を示します。

于 2011-11-23T00:11:56.227 に答える