2011年11月24日木曜日

画面をキャプチャする


久しぶりの投稿ですみませんm(_ _)m

最近 CoreGraphicsにハマってます。(以下 コアグラ)
いやーいろいろできて便利です♪

もう既にコアグラしてるぜっ!って人は突っ込みどころ満載かもしれないので手加減してくださいね。

まずは、画面に映ったものをUIImageに
しちゃいましょうか。

こんな感じ。


- (UIImage *)screenCapture {
   
    UIImage *capture;
    CGRect rect = self.view.frame;
   
    UIGraphicsBeginImageContext(rect.size);//コンテキストを作る。
    [[UIApplication sharedApplication].keyWindow.layer renderInContext:UIGraphicsGetCurrentContext()];//スクリーンからキャプチャしてコンテキストにレンダリング
    capture = UIGraphicsGetImageFromCurrentImageContext();
    

 UIGraphicsEndImageContext();//コンテキストを閉じる。
   
    return capture;



コアグラでイメージ作るのは、大抵そうなんだけど
メモリ上の空間(コンテキスト)に描画して (ここでは画面に結果が出力されない)
そいつを 
capture = UIGraphicsGetImageFromCurrentImageContext(); 

 でUIImageとして取り出す方法が基本w 




上の例では、ナビゲーションバーとかも画面に映ったものは問答無用でUIImageにしてるけれど
[app.view.layer renderInContext:UIGraphicsGetCurrentContext()];
とかに変更すると、Viewで狙いうつこともできます。

0 件のコメント:

コメントを投稿