1

1/25 秒ごとに画像を配信するバックグラウンド スレッドで後で使用するためCGContextRefに呼び出し後に保存できるようにしたいと考えています。UIGraphicsBeginImageContext

UIGraphicsBeginImageContextセレクターがバックグラウンド スレッドから呼び出されるたびに使用しているときに直面した問題は、コンテキストの作成に時間がかかり、1/25 秒ごとに画像を描画できないことです。

使用してみCGBitmapContextCreateましたが、同じ画質が得られませんUIGraphicsBeginImageContext()-->[image drawInRect]

UIGraphicsBeginImageContext呼び出してviewDidLoadその直後に保存しようとしCGContextRefたので、後の呼び出しで使用できますが、コンテキストが何らかの形で解放されているため、CGContextDrawImage: invalid context 0x0呼び出しの直後に " " エラーが発生[image drawInRect] し、取得した画像UIGraphicsGetImageFromCurrentImageContext()nullその後です。

アプリケーションの存続期間全体で使用する単一のイメージ コンテキストを開始することは可能ですか? はいの場合、どのように?または、コンテキストを保存する他のオプションがあるかどうかを教えてください。

4

1 に答える 1

0

まず、1 つのスレッドでグラフィックス コンテキストを作成し、それを別のスレッドに渡すのは混乱を招きます。最初にバックグラウンド スレッドでグラフィックス コンテキストを作成するだけです。

第 2 に、UIGraphicsBeginImageContextは UIKit のグラフィック コンテキスト スタックを操作するため、CGContext作成した を保存して後で (おそらく を呼び出した後) 使用するのは混乱を招きますUIGraphicsEndImageContextCGContextRef;を保持するとうまくいくかもしれません。私はそれを試していません。

すべきことは、Core Graphics API を直接使用することです。を使用してコンテキストを作成し、 を使用してコンテキストをCGBitmapContextCreate取得し、必要に応じてを usingCGImageCGBitmapContextCreateImage変換します。CGImageUIImage+[UIImage imageWithCGImage:]

于 2012-09-20T05:53:31.247 に答える