我编写了一个函数来帮助将UIImage
数组绘制到单个UIImage
上,并在Swift中使用以下代码块:
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
let context = UIGraphicsGetCurrentContext()
for index in 0..<numPrintsPerTemplate {
// .... update x,y positions for the image ...
let image = images[index]
let imageRect = CGRect(x: x, y: y, width: imageWidth, height: imageHeight)
image.draw(in: imageRect, blendMode: .normal, alpha: 1)
}
let template = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return template
它适用于少量UIImage,但由于高内存消耗而继续崩溃。我试图在autoreleasepool {}
中包装这段代码,但没有成功。我尝试过的另一种尝试是将autoreleasepool {}
放在for-loop
内,但仍然没有运气......
之前有人遇到过这个问题吗?我错过了什么明显的东西吗?
答案 0 :(得分:0)
尝试将UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
和UIGraphicsEndImageContext()
的来电置于for循环中。它将限制会话中的数据处理量,即在一个上下文中只处理一个图像。