2012-04-13 9 views
3

スクリーンショットをプログラム的に取る方法については数多くのチュートリアルを見てきましたが、私は運がなかった:(私が今短期間だけコーディングしているので詳細に教えてもらえますか?ありがとう!コードを使用してスクリーンショットを撮る

答えて

14

この目的でUIGraphicsBeginImageContextを使用できます。例えば

:私は、画像コンテキストを取るここで

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0); 
[self.myView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage*theImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

NSData*theImageData = UIImageJPEGRepresentation(theImage, 1.0); //you can use PNG too 
[theImageData writeToFile:@"example.jpeg" atomically:YES]; 

1.まず、私はWebViewのあるmyViewとして、それを与えてくれた、あなたが望むものは何でも与えることができます。これは、画面上で見ることができるwebviewの画像を取ります。

UIGraphicsGetImageFromCurrentImageContext()を使用すると、私のwebviewのスクリーンショットがイメージに変換されます。

UIGraphicsEndImageContext()を使用すると、コンテキストを終了してください。

4.NSDataに画像を保存します。スクリーンショットをメールしなければならなかったためです。 NSDataが送信または保存に使用されている場合は、良いオプションのように見えます。

EDIT:あなたが記述する必要がカメラロールに追加する:

UIImageWriteToSavedPhotosAlbum(theImage,nil,NULL,NULL);UIGraphicsEndImageContext();

+0

これを私のコードに実装しましたが、スクリーンショットをカメラロールに保存していないようです。私はここに何かを逃していますか – RafeeJ

+0

@ RafeeSkull-manJenkins、CameraRollに保存するには、 'UIImageWriteToSavedPhotosAlbum'を使う必要があります。私の編集をチェックしてください。 – iNoob

+0

あなたは、伝説です!大変ありがとう! – RafeeJ

1

が.ITも網膜ディスプレイの世話をする。

を実際のプロセスを説明するために、

  • このanswerを見てくださいは、あなたのための画像のコンテキストサイズ(おそらく層のサイズを選択してくださいスクリーンショットが必要)
  • 作成したコンテキストでスクリーンショットを取るレイヤーをレンダーする
  • コンテキストからイメージを取得すると完了です!
+0

後、私はちょうど私の自身の説明のビットを追加したいです。それでそれに答えることを選んだ。 – Vignesh

関連する問題