2012-01-17 6 views
5

キャプチャ固有のUIViewが必要ですが、結果は低品質です。どのようにこれを修正して品質を向上させることができますか?iPadのキャプチャビューコンテキストが低品質です

UIGraphicsBeginImageContext(captureView.bounds.size); 
    [captureView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil); 
    UIGraphicsEndImageContext(); 
+2

これも試すことができます。UIGraphicsBeginImageContextWithOptions(view.bounds.size、view.opaque、0.0); –

+0

ありがとうございますが、何も変わりません! –

+2

「低品質」と言うとき、正確に何を意味していますか?画像は画面上のものと同じに見えませんか?あなたは網膜ディスプレイを使用していますが、キャプチャされた画像はシャープではありませんか?画像が粒状であるか歪んでいますか?それは何が間違っていますか? – TigerCoding

答えて

22

私は後でやiPad 3あなたがUIGraphicsBeginImageContextWithOptionsを使用して、網膜の解像度(960x640または2048×1536)でキャプチャのUIView/UIWindowを必要と推測し、その尺度パラメータは0.0fは、それが本来の解像度でキャプチャします設定(iPhone 4のための網膜と)。

このコードは、ネイティブ解像度この1つはフルスクリーン(キーウィンドウ)

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; 
CGRect rect = [keyWindow bounds]; 
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[keyWindow.layer renderInContext:context]; 
UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

これは、95%の品質をJPG形式でUIImageを節約のために同じことを

CGRect rect = [captureView bounds]; 
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[captureView.layer renderInContext:context]; 
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

であなたのUIViewをキャプチャアプリのドキュメントフォルダ

NSString *imagePath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/capturedImage.jpg"]];  
[UIImageJPEGRepresentation(capturedImage, 0.95) writeToFile:imagePath atomically:YES]; 
+0

完璧!私のために働く! – frank

1

Technical Q&A QA1703スクリーンショットを作るコード。

ここに投稿できるかどうかわかりませんが、リンク上にあります。

関連する問題