我已经看过很多例子,其中的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
我有类似的问题,但我真的想修改输入图像。我想它会更快,因为我不会每次都画出原始图像。但我找不到任何样品。如何获取原始图像的图像上下文,它已经绘制在哪里?
答案 0 :(得分:1)
UIImage
由于多种原因(大多数都围绕性能和内存)是不可变的。如果你想搞砸,你必须复制一份。
如果您想要一个可变图像,只需将其绘制到上下文中并继续使用该上下文。您可以使用CGBitmapContextCreate创建自己的上下文。
那就是说,不要在这里过多地猜测系统。 UIImage
和Core Graphics在其中有很多优化,这就是你看到很多复制图像的例子的原因。不要假设它能更快地运作。"你真的必须在你的程序中描述它。