如何删除一个UIImageView的iOS上的图像的某些部分?(How to erase some

2019-07-19 21:12发布

我有一个的UIImageView并设置它的图像的图。 我要删除的图像,就像这样,我们在Photoshop做的橡皮擦。 如何实现这一目标? 此外,如何撤消删除?

Answer 1:

如果你知道你要删除哪个区域,您可以创建一个同样大小的新形象,将掩码设置成您要删除,绘制完整的图像到新图像,并使用它作为完整的图像减去区域新图片。 要取消,只要使用一张图像。

编辑

示例代码。 假设你想从图像视图抹除的区域imgView通过与指定erasePath

- (void) clipImage 
{
    UIImage *img = imgView.image;
    CGSize s = img.size;
    UIGraphicsBeginImageContext(s);
    CGContextRef g = UIGraphicsGetCurrentContext();
    CGContextAddPath(g,erasePath);
    CGContextAddRect(g,CGRectMake(0,0,s.width,s.height));
    CGContextEOClip(g);
    [img drawAtPoint:CGPointZero];
    imageView.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}


Answer 2:

UIGraphicsBeginImageContext(imgBlankView.frame.size);
[imgBlankView.image drawInRect:CGRectMake(0, 0, imgBlankView.frame.size.width, imgBlankView.frame.size.height)];

CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(),lineWidth);
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear);

CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), red, green, blue, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());  
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), YES);

CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint1.x, lastPoint1.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
imgBlankView.image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();


文章来源: How to erase some portion of a UIImageView's image on iOS?