ios - 修改 UIGraphicsContext 中的原始 UIImage

标签 ios uiimage uikit core-graphics

我见过很多示例,其中一些示例从输入 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 有很多优化,你看到这么多复制图像的例子是有原因的。不要“假设它会工作得更快”。你真的必须在你的程序中分析它。

关于ios - 修改 UIGraphicsContext 中的原始 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31329188/

相关文章:

ios - Swift Sprite Kit 重新创建 SKSpriteNode`s

ios - 在通知服务扩展和主应用程序之间共享数据

ios - CGImageCreateWithImageProvider:无效的图像尺寸:180 x 180

swift - 水平 UICollectionView UIKIT 需要标题在顶部

ios - 我有错误 : no visible interface for 'UIAlertController'

iphone - 当 -adjustsFontSizeToFitWidth 设置为 YES 时,如何计算 UILabel 的字体大小?

ios - RestKit 和 AFNetworking 构建错误

ios - 在 iOS 上将推送通知作为后台应用程序获取

ios - UI图像大小与实际图像分辨率不同(UIImageWriteToSavedPhotosAlbum)

iphone - UIImageView 仅在我调用 initWithImage 时显示