1

我基本上想从一堆源图像中自动创建一个平铺图像,然后将其保存到用户的相册中。我没有成功将一堆小的 UIImage 绘制到一个大的 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 之前调用每一行,包括 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 屏幕截图。然后,您无需担心通过多个 OpenGL 渲染通道组合到单个 UIImage,这无疑是导致我的问题的原因。

于 2009-10-12T22:20:02.843 回答