ImageSizeFetcher
通过尽可能少的获取来获取给定 uri 的图像的大小或类型
★★ 为我收藏以关注项目! ★★
由 Daniele Margutti 创建 - danielemargutti.com
是什么是 ImageSizeFetcher
您的应用需要找到图像的大小或类型,但图像未本地存储 – 它在另一个资产服务器或云端(例如 Amazon S3);您的 web 服务不通过 API 暴露大小。
您不希望将整个图像下载到您的应用服务器 – 它可能只是为了获取这些信息就有可能达到数兆字节甚至更大。
此外,您不能等待所有图像的下载来调整您的布局(例如,UICollectionView/UITableView),并且您不能对其进行增量操作而不影响用户体验。
对于最常见的图像类型(GIF、PNG、BMP 等),图像的大小存储在文件的开始处。对于 JPEG 文件,这稍微复杂一些,但即使是这样,您也不需要下载太多图像以找到大小。
ImageSizeFetcher 仅通过下载少数 KB 执行这种最小化获取,并且不依赖于安装外部库;它只是纯 Swift 代码。
支持的格式
目前ImageSizeFetcher支持您在应用中使用的大多数常见格式
- PNG
- 动图(GIF)
- JPEG
- BMP
大多数情况下,下载的数据大小在50 KB以下。
工作原理
如果您想了解更多关于它的工作原理,我写了一篇文章,您可以在我的博客上找到
要使用它,您只需要实例化(并保持对ImageSizeFetcher
类的强引用)。它支持请求的本地内存缓存,并具有GCD队列来自动管理多个请求;您只需调用sizeFor()
方法
let imageURL: URL = ...
fetcher.sizeFor(atURL: $0.url) { (err, result) in
// error check...
print("Image size is \(NSStringFromCGSize(result.size))")
}
单元测试
单元测试位于Tests
文件夹中。
要求
ImageSizeFetcher兼容Swift 4.x。
- iOS 8.0+
- macOS 10.9+
- tvOS 9.0+
- watchOS 2.0+
问题与贡献
如果您有任何问题、建议或其他评论,请在此GitHub上提交问题。拉取请求欢迎并鼓励。
安装
通过 CocoaPods 安装
CocoaPods 是一个依赖项管理器,可自动化和简化在项目中使用第三方库(如 ImageSizeFetcher)的过程。您可以使用以下命令安装它
$ sudo gem install cocoapods
ImageSizeFetcher 需要 CocoaPods 1.0.1+ 版本来构建。
通过 Podfile 安装
要使用 CocoaPods 将 ImageSizeFetcher 集成到您的 Xcode 项目中,请指定 Podfile
中的它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target 'TargetName' do
use_frameworks!
pod 'ImageSizeFetcher'
end
然后,运行以下命令
$ pod install
Carthage
Carthage 是一个去中心化的依赖项管理器,构建您的依赖并为您提供二进制框架。
您可以使用如下命令使用 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 ImageSizeFetcher 集成到您的 Xcode 项目中,请指定 Cartfile
中的它
github "malcommac/ImageSizeFetcher"
运行 carthage
命令来构建框架,然后将构建好的 ImageSizeFetcher.framework
拖入您的 Xcode 项目。
版权
ImageSizeFetcher 根据 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。
Daniele Margutti: [email protected]
Twitter: @danielemargutti