如何在iPhone中保存大于设备分辨率的图像?

时间:2012-02-03 14:02:19

标签: iphone ios ipad core-graphics cgimage

我的问题与此link

有关

我想知道如何使用CGBitmapContextCreate保存大于设备分辨率的图像。

非常感谢任何指导的示例代码。

谢谢!

1 个答案:

答案 0 :(得分:4)

不要使用CGBitmapContextCreate,使用UIGraphicsBeginImageContextWithOptions,它要容易得多。像这样使用它:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), YES, 1.0f);
CGContextRef context = UIGraphicsGetCurrentContext();

//do your drawing

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEdnImageContext();

//your resultant UIImage is now stored in image variable

UIGraphicsBeginImageContext的三个参数是:

  1. 图片的大小 - 这可以是您想要的任何内容

  2. 图片是否具有透明度

  3. 图像中像素的比例。 0.0是默认值,因此在iPhone 3GS上它将是1.0,在带有视网膜显示器的iPhone 4上它将是2.0。你可以传入你想要的任何比例,所以如果你传入5.0,你的图像中的每个像素单位实际上将是位图中的5x5像素,就像Retina显示屏上的1像素在屏幕上真的是2x2像素一样。

  4. 编辑:事实证明,UIGraphicsBeginImageContext()是否是线程安全的问题似乎有点争议。如果你确实需要在后台线程上同时执行此操作,那么在这里使用CGBitMapContextCreate()有另一种(相当复杂的方法):UIGraphicsBeginImageContext vs CGBitmapContextCreate