在UIGraphicsContext中修改原始UIImage

时间:2015-07-09 22:14:50

标签: ios uiimage uikit core-graphics

我已经看过很多例子,其中的UIImage通过输入UIImage进行修改获得新的UIImage。它看起来像:

- (UIImage *)imageByDrawingCircleOnImage:(UIImage *)image
{
    // begin a graphics context of sufficient size
    UIGraphicsBeginImageContext(image.size);

    // draw original image into the context
    [image drawAtPoint:CGPointZero];

    // get the context for CoreGraphics
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // draw there

我有类似的问题,但我真的想修改输入图像。我想它会更快,因为我不会每次都画出原始图像。但我找不到任何样品。如何获取原始图像的图像上下文,它已经绘制在哪里?

1 个答案:

答案 0 :(得分:1)

UIImage由于多种原因(大多数都围绕性能和内存)是不可变的。如果你想搞砸,你必须复制一份。

如果您想要一个可变图像,只需将其绘制到上下文中并继续使用该上下文。您可以使用CGBitmapContextCreate创建自己的上下文。

那就是说,不要在这里过多地猜测系统。 UIImage和Core Graphics在其中有很多优化,这就是你看到很多复制图像的例子的原因。不要假设它能更快地运作。"你真的必须在你的程序中描述它。