繁体   English   中英

iOS - Objective-C:图像处理和处理

[英]iOS - Objective-C: Image manipulation and processing

我正在开发一个iOS应用程序(Objective C) ,我需要处理图像处理。

应用模块中的功能是,

拍摄要编辑的任何图像(父图像)。 然后将其他图像如similes,emojies,贴纸放入该图像中。 子图像应在父图像边界内可伸缩,可旋转,可拖动。

我成功地管理了子图像缩放,旋转,拖动效果。

但问题是,在缩放,旋转,拖动子图像期间,位于父图像外部的图像部分应该变得模糊或者比父图像内部的图像部分更低。

我附上了我正在寻找的输出的参考屏幕截图。

这是输出的参考图像,我正在寻找

编辑:这是代码段。

UIImageView* randomView = [[UIImageView alloc] initWithFrame:CGRectMake(130, 200, 100, 100)];
        randomView.image = image; //image coming from gallery
        randomView.userInteractionEnabled = YES;
        randomView.alpha = 0.8;

        imageView.backgroundColor = [UIColor clearColor];
        imageView.opaque = NO;

        randomView.backgroundColor = [UIColor clearColor];
        randomView.opaque = NO;

        [self addPanGesture:randomView];
        [self addPinchGesture:randomView];
        [self addRotateGesture:randomView];

        [imageView addSubview:randomView];

我想你要求的这个演示...查看这个演示:

http://sugartin.info/2011/10/21/mask-and-crop-of-an-image/

首先通过另一个图像形状裁剪图像,然后在演示中替换以下函数以获得您的要求....

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissModalViewControllerAnimated:YES];
    UIImage *img =  [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    self.image_view.image=[self maskImage:img withMask:[UIImage imageNamed:@"frame.png"]];
    UIImageView *viewImg=[[UIImageView alloc]initWithFrame:self.image_view.frame];
    viewImg.image=img;
    viewImg.alpha=0.4;
    [self.view addSubview:viewImg];
    [self.view sendSubviewToBack:viewImg];

}

这个演示给了我这种类型的结果......

在此输入图像描述

万一,如果你只想掩盖图像功能与另一个图像, 这里是..

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

    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
        CGImageGetHeight(maskRef),
        CGImageGetBitsPerComponent(maskRef),
        CGImageGetBitsPerPixel(maskRef),
        CGImageGetBytesPerRow(maskRef),
        CGImageGetDataProvider(maskRef), NULL, false);

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
    return [UIImage imageWithCGImage:masked];

}

希望这会有所帮助..让我知道是否有效...谢谢.. :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM