Как сохранить замаскированное изображение в iOS
Это то, что я делаю, чтобы замаскировать изображение. Это работает нормально. Моя проблема в том, что 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 ответа
Решение
Вы можете использовать этот метод для покрытия CALayer для UIImage. с /questions/8818877/uiimage-ot-calayer-v-ios/8818885#8818885
- (UIImage *)imageFromLayer:(CALayer *)layer
{
UIGraphicsBeginImageContext([layer frame].size);
[layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return outputImage;
}
Вот как в 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
}