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

时间:2011-12-16 02:09:09

标签: iphone objective-c ios cocoa-touch core-graphics

我们正在创建一个iOS照片应用。在这样做时,我们必须创建最大约2500x1600px的动态大小的图像。一旦创建了这个图像,我们想要在较大的图像上合理地快速绘制较小的图像。

我们可以看到的问题是,不可能获得大于屏幕分辨率的上下文。调用不会崩溃,但会返回nil-context。如何才能实现这样一个看似简单的任务?

其次,一旦创建了这个上下文,在一个大的顶部给定位置绘制一个小图像的最快方法是什么?

修改

我们找到了解决方案。 CGBitmapContextCreate返回nil,因为width和height参数设置为浮点数,而不是整数。有时解决方案就在你面前,你太盲目无法看到它。希望这个答案可以帮助其他人以某种方式遇到同样的问题。

2 个答案:

答案 0 :(得分:1)

确保指定整数宽度和高度作为CGBitmapContextCreate的参数,否则返回nil。否则,只要你可以为malloc提供足够的内存,上下文的大小就不重要了。

答案 1 :(得分:0)

应该可以获得几乎任何位图的上下文,您可以为其分配/ malloc足够的内存,在您的情况下为多个2500x1600x4字节的ARGB像素。

您可能还想查看使用CATiledLayer,您只需要绘制较小图像覆盖的图块。您可能需要平铺以支持受适合GPU纹理缓存的最大磁贴大小限制的旧设备。