我基本上想要从一堆源图像中自动创建平铺图像,然后将其保存到用户的相册中。我没有成功地将一堆小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之前和之前调用每一行,然后在动画计时器中我慢慢地增加绘图并绘制到上下文。完成所有操作后,我将从UIGraphicsPopContext开始调用所有内容。
答案 0 :(得分:1)
哦,那么你可以在屏幕上渲染后保存屏幕视图:
UIGraphicsBeginImageContext(myBigView.bounds.size);
[view drawRect:myBigView.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
你把它存回图像吗?
UIImage *myBigImage = UIGraphicsGetImageFromCurrentImageContext();
答案 1 :(得分:0)
做我想做的事......
使您的GLView与您想要的总体一样大。还要确保glOrtho和您的视口大小合适。然后在任何你想要的地方绘制任何你想要的东西,并采用一个OpenGL截图。然后你不必担心在多个OpenGL渲染过程中组合到单个UIImage,这无疑是导致我的问题的原因。