我有一个UIView
含2周UIImageViews
-一帧和后面帧的图片。 该帧不是一个矩形 - 它是一个不规则的形状。 用户可以操纵框架背后的画面(缩放,旋转和平移),他们正在做的时候,我想捕捉的框架内图片的缺口 - 而不是图片和框架在一起。 有没有一种方法,我可以做到这一点?
我已经成功的为以下单个图像拼合图片和框架一起,但我只想要的图片,而如果提取成功将有边界的框架的形状。
- (IBAction)renderPhoto:(id)sender {
//Combine the layers into a single image
UIView *canvas = [[[sender superview] subviews] objectAtIndex:0];
UIGraphicsBeginImageContext(canvas.bounds.size);
[canvas.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
你可以创建从框架面具,这个面具应用于目标图像基本上削减掉帧目标图像。 或者,您可以根据自己最终使用的最终图像,它可能是简单的剪辑使用框架,而你执行你的绘图上下文。
本主题涵盖了一切: https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_images/dq_images.html#//apple_ref/doc/uid/TP30001066-CH212-TPXREF101
(裁剪的上下文中)的第二个选项是下通过夹持语境掩蔽影像 。
用我这种方法..
- (UIImage*)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
UIGraphicsBeginImageContext(photo.frame.size);/// use your screen or photo frame
[photo.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = CGImageCreateWithImageInRect([screenshot CGImage], rect);
UIImage *cropped = [UIImage imageWithCGImage:imageRef];
/* no origin .....
UIGraphicsBeginImageContext(tempview.frame.size);
[[self.photo layer] renderInContext:UIGraphicsGetCurrentContext()];
cropped= UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
*/
return cropped;
}
希望,这帮助你.... :)