WebPKit
WebPKit
是一个开源的 Swift 框架,它封装了谷歌的 WebP 库,为苹果所有平台上处理 WebP 图像文件提供了一个本地感的 Cocoa API。
WebPKit
通过扩展某些 Cocoa 类来启用从磁盘解码 WebP 图像数据或从内存中编码 WebP 图像数据。它还提供了额外的功能,例如在解码之前验证 WebP 文件的哪些内容,以及使用 WebP 的解码功能以启用自定义大小。
特色功能
- 读取 WebP 格式的图像文件。
- 将内存中的图像写入 WebP 格式。
- 支持 所有 的苹果平台(包括 Mac Catalyst)。
- 在解码之前快速验证 WebP 数据的便利方法。
- 直接以自定义大小解码 WebP 图像(节省内存)
- 100% Swift,并且完全单元测试。
要求
- iOS: 9.0 以上
- macOS: 10.9 以上
- tvOS: 9.0 以上
- watchOS: 2.0 以上
在手动安装时,您还需要谷歌的 WebP
C 库。预编译的静态二进制文件可在 Cocoa-WebP 仓库 中找到。
使用
WebPKit
向多种流行的Cocoa类提供扩展,以便原生支持WebP格式。
验证WebP图像文件
WebPKit
提供多种方法来检查文件或某些数据的内容,以查看它是否是有效的WebP文件。
import WebPKit
// Check a `Data` object to see if it contains WebP data
let webpData = Data(...)
print(webpData.isWebP)
// Check a file on disk to see if it is a WebP file
let url = URL(...)
print(url.isWebP)
// Retrieve the pixel size of the image without decoding it
let size = CGImage.sizeOfWebP(with: Data())
解码WebP图像
WebPKit
在iOS平台和macOS上以CGImage
级别解码WebP图像数据,并分别为UIImage
和NSImage
提供了便利的初始器。
iOS / iPadOS / tvOS / watchOS
import WebPKit
// Load from data in memory
let webpImage = UIImage(webpData: Data())
// Load from disk
let webpImage = UIImage(contentsOfWebPFile: URL())
// Load from resource bundle
let webpImage = UIImage.webpNamed("MyWebPImage")
macOS
import WebPKit
// Load from data in memory
let webpImage = NSImage(webpData: Data())
// Load from disk
let webpImage = NSImage(contentsOfWebPFile: URL())
// Load from resource bundle
let webpImage = NSImage.webpNamed("MyWebPImage")
安装
CocoaPods
将以下内容添加到您的Podfile
pod 'WebPKit'
Carthage
Carthage支持即将推出。请保持关注!
Swift Package Manager
SPM支持即将推出。请保持关注!
手动安装
1. Download this repository.
2. Copy the `WebPKit` folder to your Xcode project.
3. Download the precompiled WebP binary from [the Cocoa-WebP repo](https://github.com/TimOliver/WebP-Cocoa) for your desired platform.
4. Drag that framework into your Xcode project.
为什么构建这个?
在漫画阅读器应用程序 iComics 中支持 WebP 图像文件已经是一直以来的增长功能请求。由于 iComics 是用 Objective-C 编写的,所以我能够使用 GitHub 上许多库中的一个,即 之一,来容易地支持它。
但是尽管如此,当我在改进 iComics 2 时,我开始意识到,对于 Swift,以及苹果的现代化平台和一般特性,WebP 的支持仍然非常有限。
Google 自己预编译的 WebP 二进制文件不支持 Swift 或 Mac Catalyst,尽管我找到了几种不同的 WebP Swift 库,但没有一个满足我所有预期的要求(例如 CocoaPods 支持、精确的 alpha 通道控制和中间大小的解码)。
考虑到这一功能将是 iComics 2 的一个极其重要的支柱,我认为花时间和投资重新构建一个真正优秀的 WebP 框架是值得的。该框架应遵循苹果框架的 API 设计以易于集成,同时也让我从一开始就拥有包含所有需要的高级功能的控制权。
我对这个框架的结果感到极其满意。结果证明,我所期望的代码量远未这么大,而且所有的代码都很好地作为现有苹果类别的扩展。展望未来,我希望这个框架也能对其他苹果开发者有价值。
致谢
WebPKit
是由 Tim Oliver 创建的。
也向 SDWebImage
团队表示衷心的感谢,他们一直维护着 WebP 的 CocoaPods 和 Carthage 发布,时间是如此之长。
许可协议
WebPKit
采用 MIT 许可证。请参阅LICENSE 文件以获取更多详细信息。