向 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 设备的内存处理来说太多了。
解决方案是对文件进行批处理以处理如下内容:
- 创建下一批。
- Process/upload 当前批次中的图像。
- 处理当前批次。
- 从上面的 1 开始重复。
这样一来,您永远不必一次在内存中保存太多内容。
我试图通过在上下文中绘制来为我的图像添加边框,但内存不断增长。
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.
所以在讨论它并检查图像之后,它看起来像是试图一次处理 100 个,这对于 iOS 设备的内存处理来说太多了。
解决方案是对文件进行批处理以处理如下内容:
- 创建下一批。
- Process/upload 当前批次中的图像。
- 处理当前批次。
- 从上面的 1 开始重复。
这样一来,您永远不必一次在内存中保存太多内容。