Как сделать скриншот части окна приложения? - PullRequest
2 голосов
/ 14 марта 2012

Я пытаюсь сохранить скриншот части экрана со всеми объединенными видами и слоями. Единственный способ, которым я знаю, как это сделать, это с помощью кода ниже.

Код ниже создает квадрат 80x80, но с верхним левым углом 0,0.

Как я могу вырезать меньший прямоугольник из скриншота полной страницы? Например, у меня есть снимок экрана с полным окном 320x480, но мне нужен только квадрат 80x80 с центром в 160,240?

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

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

Спасибо!

Ответы [ 2 ]

9 голосов
/ 14 марта 2012

после получения снимка экрана обрежьте нужную деталь, используя

CGImageRef imageRef = CGImageCreateWithImageInRect([screenshot CGImage], cropRect);
UIImage *result = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
3 голосов
/ 14 марта 2012

Непроверенное предложение ...

    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();
...