我正在开发一个应用程序,它可以从录制的视频中创建帧:
var videoFrames:[UIImage] = [UIImage]()
func loadImages(){
let generator = AVAssetImageGenerator(asset: asset)
generator.generateCGImagesAsynchronously(forTimes: capturedFrames, completionHandler: {requestedTime, image, actualTime, result, error in
DispatchQueue.main.async {
if let image = image {
self.videoFrames.append(UIImage(cgImage: image)) }
}
})
}
代码可以正常加载最多 +/- 300 张图像。 当有更多时,应用程序由于内存问题而终止 - 我对 swift 相当陌生 - 我怎样才能进一步调试它?
有没有更好的方法来存储这么多图像?分成几个数组可以解决这个问题吗?
我的目标是有效地存储数千张照片(最高 1920x1080) - 也许您可以推荐一些更好的方法?
最佳答案
将图像写入磁盘并维护包含图像名称和路径的数据库。
if let image = image {
let uiImage = UIImage(cgImage: image)
let fileURL = URL(fileURLWithPath: ("__file_path__" + "\(actualTime).png"))
uiImage.pngData()!.write(to: fileURL)
//write filepath and image name to database
}
关于ios - UIImage 数组中数百张图片 - 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48166386/