如何截取应用程序窗口的一部分?

时间:2012-03-14 01:43:09

标签: iphone objective-c ios uiview screenshot

我正在尝试保存屏幕的一部分屏幕截图,其中所有视图和图层都已合并。我知道如何做到这一点的唯一方法是使用下面的代码。

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

如何从整页截图中剪切出一个较小的矩形?例如,我有一个320x480全窗口截图,但我只需要一个80x80的方格,中心位于160,240?

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

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

谢谢!

2 个答案:

答案 0 :(得分:9)

获取截图图片后,使用此

裁剪所需的部分
CGImageRef imageRef = CGImageCreateWithImageInRect([screenshot CGImage], cropRect);
UIImage *result = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);

答案 1 :(得分: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();