掩蔽UIImage [英] masking a UIImage
问题描述
我正在开发一个可以更改边框或矩形UIImage的应用程序。边界会有所不同,但看起来像是用剪刀剪下的UIImage,或者是那些影响的东西。
I'm working on an app that can change the borders or a rectangular UIImage. The borders will vary, but will look like the UIImage was cut out with scissors, or something to that affect.
这是最好的方法是什么?
What is the best way to do this?
我的第一个想法是准备一堆具有正确边框效果的透明PNG,我正在寻找,然后以某种方式使用它作为我的UIImage的掩码。这是正确的道路吗?
My first thought is to prep a bunch of transparent PNGs with the correct border effect I'm looking for, and then somehow use that as a mask for my UIImage. Is this the right path? Or is there a more flexible programmatic way to do this?
推荐答案
这里是Core Graphics调用,可以用来屏蔽image:
Here are the Core Graphics calls that you can use to mask the image:
//Mask Image
UIImage *inputImage = [UIImage imageNamed:@"inputImage.png"];
CGImageRef maskRef = [UIImage imageNamed:@"mask.png"].CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([inputImage CGImage], mask);
CGImageRelease(mask);
UIImage *maskedImage = [UIImage imageWithCGImage:masked];
CGImageRelease(masked);
这篇关于掩蔽UIImage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!