-1
我有問題,我嘗試使用過濾器的一些圖像有擴展名3000x2000,當我做它RAM上層和應用程序有「didReceiveMemoryWarning」致命錯誤。核心圖像和內存泄漏,迅速3.0
func setFilters(images: [UIImage]) -> [UIImage] {
let filter = CIFilter(name: "CIColorControls")!
filter.setValue(2.0, forKey: kCIInputContrastKey)
let context = CIContext(options: nil)
var result = [UIImage]()
for img in images {
let newImage = autoreleasepool(invoking: {() -> UIImage in
filter.setValue(CIImage(image: img)!, forKey: kCIInputImageKey)
let ciImage = filter.outputImage!
let cgImage = context.createCGImage(ciImage, from: ciImage.extent)
return UIImage(cgImage: cgImage!, scale: img.scale, orientation: img.imageOrientation)
})
result.append(newImage)
}
return result
}
然後如何在過濾器後存儲圖像,我做了10張照片,並嘗試過濾它們並保存到手機。 –
你可以保存它們,但你需要保存每一個_immediately_,不要等到你過濾了其中的10個。你沒有那個記憶。同樣,您不能拍攝10張照片並將其全部保留在記憶中。最初將每一個保存到磁盤。只加載_one_照片進行處理,處理它,保存處理的照片並釋放這兩張照片。重複。簡單。 – matt
如果我將註釋與「result.append(newImage)」一致,該程序將崩潰didReceiveMemoryWarning的bcs。 –