1

我已经将 PNG 加载到 UIImage 中。我想根据路径获取图像的一部分(即它可能不是矩形)。比如说,它可能是一些带有弧线的形状,等等。就像一个绘图路径。

最简单的方法是什么?

谢谢。

4

2 回答 2

2

我还没有运行它,所以它可能并不完美,但这应该会给你一个想法。

UIImage *imageToClip = //get your image somehow
CGPathRef yourPath = //get your path somehow
CGImageRef imageRef = [imageToClip CGImage];

size_t width = CGImageGetWidth(imageRef);  
size_t height = CGImageGetHeight(imageRef);
CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, 0, CGImageGetColorSpace(imageRef), kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
CGContextAddPath(context, yourPath);
CGContextClip(context);

CGImageRef clippedImageRef = CGBitmapContextCreateImage(context);  
UIImage *clippedImage = [UIImage imageWithCGImage:clippedImageRef];//your final, masked image

CGImageRelease(clippedImageRef);
CGContextRelease(context);
于 2013-11-06T18:35:40.253 回答
1

使用以下方法向 UIImage 添加类别的最简单方法:

-(UIImage *)scaleToRect:(CGRect)rect{
// Create a bitmap graphics context
// This will also set it as the current context
UIGraphicsBeginImageContext(size);

// Draw the scaled image in the current context
[self drawInRect:rect];

// Create a new image from current context
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

// Pop the current context from the stack
UIGraphicsEndImageContext();

// Return our new scaled image
return scaledImage;

}

于 2013-11-06T18:09:50.847 回答