圖像表示將占用大量的CPU和內(nèi)存資源祖灰。 因此滓走,在這種情況下,最好遵循以下幾條規(guī)則:
不要在主隊(duì)列上運(yùn)行jpegData(compressionQuality :)
同時(shí)運(yùn)行一個(gè)jpegData(compressionQuality :)
錯(cuò)誤:
for i in 0...50 {
DispatchQueue.global(qos: .utility).async {
let quality = 0.02 * CGFloat(i)
//let data = image.toJpegData(compressionQuality: quality)
let data = image.jpegData(compressionQuality: quality)
let size = CGFloat(data!.count)/1000.0/1024.0
print("\(i), quality: \(quality), \(size.rounded()) mb")
}
}
正確
let serialQueue = DispatchQueue(label: "queue", qos: .utility, attributes: [], autoreleaseFrequency: .workItem, target: nil)
for i in 0...50 {
serialQueue.async {
let quality = 0.02 * CGFloat(i)
//let data = image.toJpegData(compressionQuality: quality)
let data = image.jpegData(compressionQuality: quality)
let size = CGFloat(data!.count)/1000.0/1024.0
print("\(i), quality: \(quality), \(size.rounded()) mb")
}
}
原文地址:https://www.itranslater.com/qa/details/2325693309395665920