修改 UIGraphicsContext 中的原始 UIImage
Modify original UIImage in UIGraphicsContext
我见过很多示例,其中有人从输入 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
我有类似的问题,但我真的想修改输入图像。我想它会工作得更快,因为我不会每次都绘制原始图像。但我找不到它的任何样本。我怎样才能得到原始图像的图像上下文,它已经被绘制出来了?
UIImage
由于多种原因(大多数与性能和内存有关)是不可变的。想乱就必须复制一份
如果您想要可变图像,只需将其绘制到上下文中并继续使用该上下文即可。您可以使用 CGBitmapContextCreate 创建自己的上下文。
就是说,不要在这里过分猜测系统。 UIImage
和 Core Graphics 有很多优化,你看到这么多复制图像的例子是有原因的。不要 "suppose it would work faster." 你真的必须在你的程序中分析它。
我见过很多示例,其中有人从输入 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
我有类似的问题,但我真的想修改输入图像。我想它会工作得更快,因为我不会每次都绘制原始图像。但我找不到它的任何样本。我怎样才能得到原始图像的图像上下文,它已经被绘制出来了?
UIImage
由于多种原因(大多数与性能和内存有关)是不可变的。想乱就必须复制一份
如果您想要可变图像,只需将其绘制到上下文中并继续使用该上下文即可。您可以使用 CGBitmapContextCreate 创建自己的上下文。
就是说,不要在这里过分猜测系统。 UIImage
和 Core Graphics 有很多优化,你看到这么多复制图像的例子是有原因的。不要 "suppose it would work faster." 你真的必须在你的程序中分析它。