2012-03-14 71 views
2

我正在尝试保存所有视图和图层合并后的屏幕截图。我知道如何做到这一点的唯一方法是使用下面的代码。如何截取应用程序窗口的一部分截图?

下面的代码创建一个80x80的正方形,但左上角为0,0。

如何从完整页面截图中切出较小的矩形?例如我有一个320x480的完整窗口截图,但我只需要一个以160,240为中心的80x80平方?

UIGraphicsBeginImageContext(smallView.frame.size); 
[appDelegate.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

谢谢!

+0

也许你可以添加一个蒙版,然后获得从暴露区域的背景下,屏幕显示图像裁剪需要的部分后? – tams 2012-03-14 01:53:25

回答

9

获得使用该

CGImageRef imageRef = CGImageCreateWithImageInRect([screenshot CGImage], cropRect); 
UIImage *result = [UIImage imageWithCGImage:imageRef]; 
CGImageRelease(imageRef); 
3

未经检验的建议...

UIGraphicsBeginImageContext(smallView.frame.size); 
    [appDelegate.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 

    CGRect cropRect = UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
    CGRectMake(160.0,240.0,smallView.frame.size.width,smallView.frame.size.height); 
    CGImageRef croppedImageRef = CGImageCreateWithImageInRect(screenshot.CGImage,cropRect); 
    UIImage *croppedScreenshot = [UIImage imageWithCGImage:croppedImageRef]; 
    CGImageRelease(croppedImageRef); 
    UIGraphicsEndImageContext(); 
相关问题