0

スタックぼかしを適用しようとしている画像があり、作成した .png ファイルからマスクを適用して、下の鮮明な画像を表示したいと考えています。特定の時間に変更できるようにするには、下の画像が必要ですが、マスク付きのblurViewは静的なままにします。これは私が使用している私のコードですが、ぼかしでマスクされた画像が得られません。

  - (void)viewDidLoad
    {
        [super viewDidLoad];

    UIImageView *imageview = [UIImageView new];
    [imageview setFrame:[self.view bounds]];
    [imageview setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
    [imageview setImage:[UIImage imageNamed:@"myImage.jpg"]];
    [imageview setContentMode:UIViewContentModeScaleAspectFill];
    [self.view addSubview:imageview];

    [self setBlurView:[AMBlurView new]];
    [[self blurView] setFrame:CGRectMake(0.f, 0.f, [self.view bounds].size.width, [self.view bounds].size.height)];
    [[self blurView] setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];

    [self.view addSubview:[self blurView]];

    imageview.image = [self maskImage:imageview.image withMask:[UIImage imageNamed:@"mask"]];

}

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {

    CGImageRef imgRef = [image CGImage];
    CGImageRef maskRef = [maskImage CGImage];
    CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                              CGImageGetHeight(maskRef),
                                              CGImageGetBitsPerComponent(maskRef),
                                              CGImageGetBitsPerPixel(maskRef),
                                              CGImageGetBytesPerRow(maskRef),
                                              CGImageGetDataProvider(maskRef), NULL, false);
    CGImageRef masked = CGImageCreateWithMask(imgRef, actualMask);
    return [UIImage imageWithCGImage:masked];

}
4

1 に答える 1

2

ぼかし画像のこのココア コントロールを試してください。

ココアコントロール

更新された回答

- (void)viewDidLoad
    {
        [super viewDidLoad];

    UIImageView *imageview = [UIImageView new];
    [imageview setFrame:[self.view bounds]];
    [imageview setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
    [imageview setImage:[UIImage imageNamed:@"myImage.jpg"]];
    [imageview setContentMode:UIViewContentModeScaleAspectFill];
 imageview.image = [self maskImage:imageview.image withMask:[UIImage imageNamed:@"mask"]];
    [self.view addSubview:imageview];

    [self setBlurView:[AMBlurView new]];
    [[self blurView] setFrame:CGRectMake(0.f, 0.f, [self.view bounds].size.width, [self.view bounds].size.height)];
    [[self blurView] setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];

    [self.view addSubview:[self blurView]];



}

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {

    CGImageRef imgRef = [image CGImage];
    CGImageRef maskRef = [maskImage CGImage];
    CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                              CGImageGetHeight(maskRef),
                                              CGImageGetBitsPerComponent(maskRef),
                                              CGImageGetBitsPerPixel(maskRef),
                                              CGImageGetBytesPerRow(maskRef),
                                              CGImageGetDataProvider(maskRef), NULL, false);
    CGImageRef masked = CGImageCreateWithMask(imgRef, actualMask);
    return [UIImage imageWithCGImage:masked];

}
于 2013-09-21T06:22:35.263 に答える