WebPKit 1.0.0

WebPKit 1.0.0

Tim Oliver 维护。



WebPKit 1.0.0

  • 作者
  • Tim Oliver

WebPKit

WebPKit running on various devices

CI Version Carthage compatible GitHub license Platform

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图像数据,并分别为UIImageNSImage提供了便利的初始器。

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 文件以获取更多详细信息。