2012-03-14 3 views
2

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

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

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

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

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

Спасибо!

+0

Может быть, вы можете добавить маску изображения, а затем получить контекст из немаскированного региона? – tams

ответ

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(); 
Смежные вопросы