iOS:如何创build和绘制(并保存)比屏幕更大的图像?

我们正在创build一个iOS照片应用程序。 在这样做的时候,我们必须创build大小约2500x1600px的dynamic大小的图片。 一旦这个图像被创build,我们想要在较大的图像上合理快速地绘制较小的图像。

我们可以看到的问题是,获取大于屏幕分辨率的上下文是不可能的。 调用不会崩溃,但会返回一个无上下文。 怎么能这样一个看似简单的任务呢?

其次,一旦创build了这个环境,在大环境中的某个特定位置上画一个小图像的最快方法是什么?

编辑:

我们find了解决scheme。 CGBitmapContextCreate返回nil,因为宽度和高度参数被设置为浮点数,而不是int。 有时候解决scheme就在你的面前,而你却盲目地看不到它。 希望这个答案可以帮助其他人以某种方式有相同的问题。

确保将整数宽度和高度指定为CGBitmapContextCreate的参数,否则返回nil。 否则,只要你可以malloc足够的内存,上下文的大小应该没有关系。

应该可以获得几乎所有可以为其分配/ malloc足够内存的位图的上下文,在这种情况下,您的情况是ARGB像素的2500x1600x4字节的倍数。

您可能还想使用CATiledLayer进行研究,在这种情况下,您只需在较小的图像覆盖的图块中绘制图层。 您可能需要平铺以支持较老的设备,这些设备受限于适合GPU纹理caching的最大图块大小。