我基本上要从一堆源图像的自动创建平铺图像,然后将该保存到用户的相册。我没有任何成功绘制了一堆小的UIImage的进入一个大的UIImage。什么是实现这一目标的最佳方式是什么?目前我使用UIGraphicsBeginImageContext()和[UIImage的drawAtPoint]等我曾经结束了是512×512的黑色正方形。我应该怎么做呢?我期待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。

有帮助吗?

解决方案 2

要怎么做我想做的事......

请您GLView一样大,你想要的总的事情。另外,还要确保glOrtho和视口有合适的尺寸。然后,只需画任何你想要的,无论你想,并采取单一的OpenGL屏幕截图。然后,你不必担心相结合,在多个OpenGL渲染一个UIImage的通行证,这是毫无疑问的是什么导致了我的问题。

其他提示

呵呵,那么你可以只保存屏幕上的观点已经呈现在屏幕上后:

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

,您在将其存储回的图像?

UIImage *myBigImage = UIGraphicsGetImageFromCurrentImageContext();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top