Kingfisher 在 iOS 14+ 上支持 WebP 吗?

问题描述 投票:0回答:2

我收到了混合信号,如 wiki 所说

WebpFramework
是一个可用于解析 WebP 数据的外部框架。目前,Kingfisher 不支持开箱即用的 WebP 图像。

但是作者有这个评论说:

这是一个 WebP 图像,仅从 iOS 14 开始支持内置。

这也指向常见问题解答中所说的

我可以加载一些特殊的图像格式,如WebP吗?

是的,但 Kingfisher 中不内置支持。您可能需要实现自己的

ImageProcessor
CacheSerializer
。其他一些库也已经完成了这项工作,例如KingfisherWebP。有关此主题的更多讨论,请在问题中搜索“webp”。

我不清楚 iOS 14 内置支持是否会自动“吸收”到 Kingfisher 中,而且我很困惑为什么 wiki 和 FAQ 都提到这一点。

我宁愿避免使用 KingfisherWebP,因为它看起来不太活跃,并且根据作者的此评论,他们尚未利用 iOS 14 支持?

我还注意到从 iOS 14 开始,webp 格式有了内置支持。我们计划实现此功能以减少 iOS 14 设备中的内存占用。

ios image caching webp kingfisher
2个回答

0
投票

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()
}
© www.soinside.com 2019 - 2024. All rights reserved.