如何在UIImage中获取形状的UIBezierPath或将UIImage裁剪为特定形状 [英] How to get UIBezierPath of shape in UIImage or crop UIImage in a certain shape
本文介绍了如何在UIImage中获取形状的UIBezierPath或将UIImage裁剪为特定形状的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是iOS的新手,我想知道是否可以获取 UIImage
的 UIBezierPath
.我的脸部布局有 UIImage
,并且想要获得 UIBezierPath
,这可以帮助我裁剪 UIImage
.或者,有人可以告诉我有关裁剪 UIImage
s的其他方法吗?但请确保裁剪以自定义形状(例如:脸,心等)而不是矩形进行.
I am new in iOS, I want to know if I can get the UIBezierPath
of a UIImage
. I have a UIImage
of face layout and want to get the UIBezierPath
, which helps me in cropping the UIImage
.
Or, can any one tell me about other ways of cropping UIImage
s?, but make sure cropping is in a custom shape (like: face, heart etc), not in a rectangle.
推荐答案
下面是代码用图像遮盖图像:
- (UIImage *)cerateImageFromImage:(UIImage *)image
withMaskImage:(UIImage *)mask {
CGImageRef imageRef = image.CGImage;
CGImageRef maskRef = mask.CGImage;
CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef),
NULL,
YES);
CGImageRef maskedReference = CGImageCreateWithMask(imageRef, imageMask);
CGImageRelease(imageMask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference];
CGImageRelease(maskedReference);
return maskedImage;
}
用法:
UIImage *image = [UIImage imageNamed:@"Photo.png"];
UIImage *mask = [UIImage imageNamed:@"Mask.png"];
self.imageView.image = [self cerateImageFromImage:image
withMaskImage:mask];
这篇关于如何在UIImage中获取形状的UIBezierPath或将UIImage裁剪为特定形状的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文