我收到了混合信号,如 wiki 所说:
是一个可用于解析 WebP 数据的外部框架。目前,Kingfisher 不支持开箱即用的 WebP 图像。WebpFramework
但是作者有这个评论说:
这是一个 WebP 图像,仅从 iOS 14 开始支持内置。
这也指向常见问题解答中所说的:
我可以加载一些特殊的图像格式,如WebP吗?
是的,但 Kingfisher 中不内置支持。您可能需要实现自己的
和ImageProcessor
。其他一些库也已经完成了这项工作,例如KingfisherWebP。有关此主题的更多讨论,请在问题中搜索“webp”。CacheSerializer
我不清楚 iOS 14 内置支持是否会自动“吸收”到 Kingfisher 中,而且我很困惑为什么 wiki 和 FAQ 都提到这一点。
我宁愿避免使用 KingfisherWebP,因为它看起来不太活跃,并且根据作者的此评论,他们尚未利用 iOS 14 支持?
我还注意到从 iOS 14 开始,webp 格式有了内置支持。我们计划实现此功能以减少 iOS 14 设备中的内存占用。
答案是肯定的:Kingfisher 在 iOS 14+ 上支持 WebP 并且 常见问题解答已使用此信息更新。
Kingfisher 在 iOS 14+ 上支持 WebP,但动画 webp 图像需要 KingfisherWebP 插件
测试代码在这里:
import SwiftUI
import Kingfisher
import KingfisherWebP
struct ContentView: View {
let url = URL(string: "https://mathiasbynens.be/demo/animated-webp-supported.webp")!
var body: some View {
HStack {
VStack {
KFImage.url(url)
.resizable()
KFImage.url(url)
.setProcessor(WebPProcessor.default)
.serialize(by: WebPSerializer.default)
.resizable()
}
VStack {
KFAnimatedImage.url(url)
// only this can display animate webp
KFAnimatedImage.url(url)
.setProcessor(WebPProcessor.default)
.serialize(by: WebPSerializer.default)
}
}
.padding()
}
}
#Preview {
ContentView()
}