FaceAware
有时,我们需要处理的图像的长宽比并不能完全适合我们的UIImageView中。
在大多数情况下,我们可以使用 AspectFill 将图像适应于 UIImageView 的边界,而不会拉伸或留下空白,然而,当涉及到人物照片时,如果它们不是完全居中,那么人脸通常会被裁剪掉。
这就是 FaceAware 发挥作用的地方。它将通过 UIImageView
的 image
属性或您使用内置函数设置的图像来分析图像,并专注于它能够找到的任何人脸。
FaceAware 最常见的用途是与头像。
使用 FaceAware,您的用户将不再需要裁剪和调整他们的个人资料图片。
基于这两个较旧的项目
这两个项目似乎都没有再维护了。
要求
- Swift 5.1
- iOS 8.0+
- Xcode 11
安装
手册
简单地将 UIImageView+FaceAware.swift
拖入你的项目中。
Carthage
- 在你的
Cartfile
中添加github "BeauNouvelle/FaceAware"
。
有关安装和设置 Carthage 的更多信息,请参阅此处:https://github.com/Carthage/Carthage
Cocoapods
- 在 pod 文件中添加
pod 'FaceAware'
。 - 将
import FaceAware
添加到你希望使用它的文件顶部。
用法
有几种方法可以让你的图像视图聚焦于图像中的面部。
界面编辑器
这是最简单的方法,不需要编写任何代码。扩展使用 @IBDesignable
和 @IBInspectable
,你可以在 IB 中打开 focusOnFaces。然而,直到你运行项目,你实际上看不到扩展的工作。
代码
你可以设置 focusOnFaces
为 true
。
someImageView.focusOnFaces = true
确保在设置图像之后进行此操作。如果在调用时没有图像,将没有面部可供聚焦。
或者你也可以使用
someImageView.set(image: myImage, focusOnFaces: true)
这样可以消除之前未设置图像的担忧。
您还可以通过将闭包传递给《didFocusOnFaces
》属性来接收到当人脸检测和任何图像调整完成时的回调。
someImageView.didFocusOnFaces = {
print("Did finish focussing")
}
调试
FaceAware现在具有调试模式,可以在检测到的图像内任何人脸周围画红色正方形。要启用,可以将debug
属性设置为true。
someImageView.debug = true
您也可以在界面构建器中设置此标志。
需要更多帮助?有问题吗?
在Twitter上联系我 @beaunouvelle。此外,如果您在项目中使用并喜欢它,请通知我以便我继续对此进行改进!
未来计划
- 添加仅关注照片中最大/最近人脸的选项。