如何制作非矩形的图像

时间:2012-07-05 10:56:00

标签: iphone ios5 photolibrary

我有一个问题是要创建不规则形状的图像。这是我的框架的例子。

Frame containing two parts of odd shape

请创建像这样创建图像的任何想法。它包含两个不同帧中的两个图像。但是这两个图像在框架内适合后隐藏了它的一部分。

3 个答案:

答案 0 :(得分:0)

你必须创建掩盖图像,将掩盖原始图像的一部分.. 试着看How to Mask an UIImageView它可能会有所帮助......

答案 1 :(得分:0)

你可以使用面具:

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage
{
    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                    CGImageGetHeight(maskRef),
                                    CGImageGetBitsPerComponent(maskRef),
                                    CGImageGetBitsPerPixel(maskRef),
                                    CGImageGetBytesPerRow(maskRef),
                                    CGImageGetDataProvider(maskRef), NULL, false);

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);

    return [UIImage imageWithCGImage:masked];
}
  • 图片是您的原始图片。
  • maskImage是一个黑白图像。如果maskImage为黑色,则会显示原始图像。

答案 2 :(得分:0)

你需要有边框的图像来掩盖你想象的图像。现在这样做:

 #import <QuartzCore/QuartzCore.h>
 // remember to include Framework as well

CALayer *mask = [CALayer layer];
mask.contents = (id)[[UIImage imageNamed:@"bordered_image_mask.png"] CGImage]; // here bordered image
mask.frame = CGRectMake(5, 5, <img_width>, <img_height>); // here x and y is 5 to show white boder around like in image
yourImageView.layer.mask = mask;
yourImageView.layer.masksToBounds = YES;