我的要求是使用 maskImage 裁剪图像。 能够裁剪图像,但不能像预期的那样精确。我用谷歌搜索并尝试实现它,但不幸的是没有得到预期的结果。这是裁剪图像后得到的结果。
以下是我正在使用的代码。
- (UIImage*) maskImage1UIImage *) image withMaskUIImage *) mask
{
CGImageRef imageReference = image.CGImage;
CGImageRef maskReference = mask.CGImage;
CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference),
CGImageGetHeight(maskReference),
CGImageGetBitsPerComponent(maskReference),
CGImageGetBitsPerPixel(maskReference),
CGImageGetBytesPerRow(maskReference),
CGImageGetDataProvider(maskReference),
NULL, // Decode is null
YES // Should interpolate
);
CGImageRef maskedReference = CGImageCreateWithMask(imageReference, imageMask);
CGImageRelease(imageMask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference];
CGImageRelease(maskedReference);
return maskedImage;
}
谢谢..!!
另一种选择
你也可以用CALayers达到同样的效果,在我看来,很清楚。
- (UIImage*) maskImage1UIImage *) image withMaskUIImage *) mask
{
UIImage* maskedImage = image;
CALayer *maskLayer = [CALayer layer];
maskLayer.frame = maskedImage.bounds;
maskLayer.contents = (__bridge id) mask.CGImage;
maskedImage.layer.mask = maskLayer;
return maskedImage;
}
可能是一个解决方案
你的面具 UIImage 可能有 contentScale 错误
mask.layer.contentScale = [UISCreen mainScreen].scale;
您还可以在执行 CGImageMaskCreate 之前强制设置 mask 的大小:
mask.frame = image.bounds;
关于ios - 使用蒙版裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421323/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |