【发布时间】:2018-08-02 05:15:45
【问题描述】:
已解决
我必须处理 100 张 2400x2000 像素的图像。我在后台线程中循环执行。但是在第 60 到 70 幅图像上,渲染的结果是黑白图像......并且要记录的消息:
"Application(2227,0x16c0db000) malloc: 无法分配区域 *** mach_vm_map(size=15777792) 失败(错误代码=3)”
这是我在循环中所做的事情
UIGraphicsBeginImageContextWithOptions(PageSize.PX.size, true, 1)
let context = UIGraphicsGetCurrentContext()
UIColor.white.setFill()
context?.fill(CGRect(x: 0, y: 0, width: PageSize.PX.size.width, height: PageSize.PX.size.height))
image?.draw(in: newImageRect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
同时,如果我处理 50 张图像 - 一切正常。 此外,每个循环都被添加到自动释放池中。
我已经尝试过 UIGraphicsImageRenderer。它的工作速度比通过图像上下文慢,并且在第 50 - 60 个图像之后,它们的大小为 0x0 像素......
我该如何解决这个问题?我可以以某种方式清理图像缓存吗?或者也许我可以增加图像处理缓存?还是……???
【问题讨论】:
-
您应该将您的解决方案作为答案发布,而不是更新您的问题。在这里回答你自己的问题是完全可以接受的,人们可以投票给你积分!
标签: swift xcode image-processing uigraphicscontext