2012-03-14 72 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(); 
相關問題