1

基本的には、一連のソース画像からタイル画像を自動的に作成し、それをユーザーのフォトアルバムに保存したいと考えています。たくさんの小さなUIImageを1つの大きなUIImageに描画することに成功していません。これを達成するための最良の方法は何ですか?現在、UIGraphicsBeginImageContext()や[UIImage drawAtPoint]などを使用しています。最終的には、512x512の黒い正方形だけになります。これをどのように行うべきですか?CGLayerなどを探していますが、選択肢はたくさんあるようですが、特に簡単に機能するものはありません。

私のコードを実際に入れましょう:

CGSize size = CGSizeMake(512, 512);
UIGraphicsBeginImageContext(size);
UIGraphicsPushContext(UIGraphicsGetCurrentContext());
for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        UIImage *image = [self getImageAt:i:j];
        [image drawAtPoint:CGPointMake(i*128,j*128)];
    }
}
UIGraphicsPopContext();
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(result, nil, nil, nil);

実際、上記は私のコードで正確に起こっていることではないことに注意する必要があります。実際に起こることは、UIGraphicsPushContextの前にすべての行を呼び出し、次にアニメーションタイマーで、描画をゆっくりとインクリメントしてコンテキストに描画することです。次に、すべてが完了した後、UIGraphicsPopContext以降のすべてを呼び出します。

4

2 に答える 2

1

ああ、画面にレンダリングされた後、画面上のビューを保存することができます。

 UIGraphicsBeginImageContext(myBigView.bounds.size);
    [view drawRect:myBigView.bounds];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

画像に保存していますか?

UIImage *myBigImage = UIGraphicsGetImageFromCurrentImageContext();
于 2009-09-28T18:08:02.340 に答える
0

自分のやりたいことをちゃんとやるために…

GLView を必要なだけ大きくします。また、glOrtho とビューポートが適切なサイズであることを確認してください。次に、好きな場所に好きなものを描き、OpenGL のスクリーンショットを 1 つ撮ります。次に、複数の OpenGL レンダリング パスを介して単一の UIImage に結合することを心配する必要はありません。これが問題の原因であることは間違いありません。

于 2009-10-12T22:20:02.843 に答える