3

UIGraphicsGetImageFromCurrentImageContext() 関数を使用して、画面の内容を UIImage オブジェクト (以前は Image コンテキストにレンダリング) にキャプチャしています。これは、シミュレーターと実際のデバイスの両方でうまく機能しますが、後者の場合、結果の画像には、次のように色が歪んだピクセルがいくつか含まれます。

http://img300.imageshack.us/img300/2788/screencap.png

上部のナビゲーション バー、検索フィールドの両側、およびボタンの右側にあるフクシア ピクセルに注目してください。左下のボタンの右側にもそのようなピクセルがあります。

画面ビューを UIImage オブジェクトにキャプチャするために使用しているコードは非常に簡単です。

UIGraphicsBeginImageContext(self.view.window.frame.size);
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *anImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

注意すべきことの 1 つは、歪んだすべてのグラフィックが、検索フィールドの背景とボタンの背景を描画するために使用されるカスタム PNG ファイルに属していることです。

この奇妙な色の歪みを引き起こしている可能性があることを誰かが知っていますか?

よろしくお願いします、

4

4 に答える 4

1

この記事では、画像の破損(部分的に透明なピクセルによって引き起こされる)の問題について説明し、Chrisのコメントを裏付ける回避策を提供します。

http://www.kaoma.net/iphone/?p=9

于 2010-11-11T13:29:53.887 に答える
1

あなたと同じことをしている自分のコードをチェックしたところです。あなたのものは私のものとほとんど同じですが、ウィンドウの代わりにビューのレイヤーにレンダリングするように要求している点が異なります。

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

なぜそれが違いを生むのかわかりませんが、試してみる価値はあります。

于 2009-12-15T14:46:13.220 に答える
1

承認されたばかりのプライベート関数 UIGetScreenImage() を使用して解決しました。

詳細については、http://www.tuaw.com/2009/12/15/apple-relents-and-is-now-allowing-uigetscreenimage-for-app-st/およびhttps://devforums.appleを確認してください。 .com/message/149553

よろしく、

于 2009-12-16T01:35:05.977 に答える
0

ビューをキャプチャしたいだけの場合、 UIGetScreenImage() は非常に面倒です。Preview.app を使用して、すべての PNG 画像を TIFF 形式に再保存するだけです:)

于 2010-04-28T09:53:53.813 に答える