私のiPhoneアプリケーションには、白黒がありUIImage
ます。その画像をぼかす必要があります(ガウスぼかしで十分です)。
iPhoneは、影を描くときに画像をぼかす方法を明確に知っています。
しかし、APIに関連するものは何も見つかりませんでした。
ハードウェアアクセラレーションを使用せずに、手作業でぼかしを行う必要がありますか?
私のiPhoneアプリケーションには、白黒がありUIImage
ます。その画像をぼかす必要があります(ガウスぼかしで十分です)。
iPhoneは、影を描くときに画像をぼかす方法を明確に知っています。
しかし、APIに関連するものは何も見つかりませんでした。
ハードウェアアクセラレーションを使用せずに、手作業でぼかしを行う必要がありますか?
これを試してください(ここにあります):
@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 回以上適用するだけです :)
過去に同じ問題が発生した後、このライブラリを確認してください:
https://github.com/tomsoft1/StackBluriOS
非常に使いやすい:
UIImage *newIma=[oldIma stackBlur:radius];
CIFilter を介してジョブにアプローチすることを検討してください。
基本的に、ぼかし効果を実装するための簡単なAPIはありません。それを達成するには、ピクセルを処理する必要があります。
iPhoneは、ぼかしではなくグラデーションを使用して影を描きます。
画像をぼかすには、畳み込み行列を使用します。畳み込み行列を適用するためのサンプルコードを次に示します。また、畳み込み行列の概要といくつかのサンプル行列(ぼかしとガウスぼかしを含む)を示します。