我正在比较使用UIImage(UIImageView)显示Jpeg2000和Jpeg的速度,并且注意到显示Jpeg2000要比Jpeg慢得多。
这是预期的吗?有没有方法可以加快显示速度呢?
谢谢, -r
不,除了不使用JPEG 2000之外,您无法对此做任何事情。JPEG 2000需要比普通JPEG文件更多的CPU功率来进行编解码。因此,即使包括第三方解码器,也可能不会带来很大的改进。
您可以将接收到的图像数据转换为 .jpg 格式,然后使用这种类型的数据。
import Foundation
import UIKit
import SDWebImageWebPCoder
extension Data {
var jpegData: Data? {
var image: UIImage?
image = UIImage(data: self) ?? SDImageWebPCoder.shared.decodedImage(with: self, options: nil)
return image?.jpegData(compressionQuality: 1.0)
}
}
如果您不想使用WepP图像,可以不使用SDImageWepPCoder。 使用示例:
func loadImage(_ url: URL) {
DispatchQueue.global(qos: .background).async { [weak self] in
guard let data = try? Data(contentsOf: url) else {return}
if let jpegData = data.jpegData {
DispatchQueue.main.async {
let displayingImage = UIImage(data: jpegData)
yourImageView.image = displayingImage
}
}
}
}
这个决定可以让您在后台线程中将jp2数据转换为JPEG,然后像往常一样使用它(具有高速渲染和无UI冻结)。