向 UIImages 内存问题添加边框

Adding border to UIImages memory issue

我试图通过在上下文中绘制来为我的图像添加边框,但内存不断增长。

func borderImages(image: [UIImage]) -> [UIImage] {
    let width: CGFloat = 3000
    let height: CGFloat = 3000
    var borderedImages = [UIImage]()

    for image in images {
        autoreleasepool {
            UIGraphicsBeginImageContextWithOptions(CGSize(width: width, height: height), true, 1.0)

            let x: CGFloat = (width - image.size.width)/2.0
            let y: CGFloat = (height - image.size.height)/2.0

            let rect = CGRect(x: x, y: y, width: image.size.width, height: image.size.height)
            image.draw(in: rect)

            if let borderedImage = UIGraphicsGetImageFromCurrentImageContext() {
                borderedImages.append(borderedImage)

            }
            UIGraphicsEndImageContext()
        }
    }

    return borderedImages
}

我尝试按照 here. Doesn't seem to make any difference. This is what allocations look like before it crashes. 的建议添加 autoreleasepool 关于如何解决此问题的任何建议?我是不是用错了autoreleasepool?

所以在讨论它并检查图像之后,它看起来像是试图一次处理 100 个,这对于 iOS 设备的内存处理来说太多了。

解决方案是对文件进行批处理以处理如下内容:

  1. 创建下一批。
  2. Process/upload 当前批次中的图像。
  3. 处理当前批次。
  4. 从上面的 1 开始重复。

这样一来,您永远不必一次在内存中保存太多内容。