如何在iOS中保存蒙版图像

时间:2013-08-27 01:28:31

标签: uiimageview uiimage mask uibezierpath cashapelayer

这是我正在做的掩盖图像..这工作正常..我的问题是self.imgView.image不是蒙面图像..我怎样才能检索蒙面图像?感谢。

- (void) setClippingPath:(UIBezierPath *)clippingPath : (UIImageView *)imgView {

    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = self.imgView.frame;
    maskLayer.path = [clippingPath CGPath];
    maskLayer.fillColor = [[UIColor whiteColor] CGColor];
    maskLayer.backgroundColor = [[UIColor clearColor] CGColor];

    self.imgView.layer.mask = maskLayer;

}

2 个答案:

答案 0 :(得分:0)

您可以使用此方法将CALayer覆盖到UIImage。来自https://stackoverflow.com/a/3454613/749786

- (UIImage *)imageFromLayer:(CALayer *)layer
{
  UIGraphicsBeginImageContext([layer frame].size);

  [layer renderInContext:UIGraphicsGetCurrentContext()];
  UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();

  UIGraphicsEndImageContext();

  return outputImage;
}

答案 1 :(得分:0)

这是 Swift 5.4 中的方法。

func image(from layer: CALayer?) -> UIImage? {
    UIGraphicsBeginImageContext(layer?.frame.size ?? CGSize.zero)

    if let context = UIGraphicsGetCurrentContext() {
        layer?.render(in: context)
    }
    let outputImage = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    return outputImage
}