我正在尝试制作一款相机/照片应用程序,它可以在图像上添加滤镜。我听说过Brad Larson的GPUImage,因此我下载了它并尝试操纵它以更加熟悉代码。
现在,我在Xcode中创建了一个新项目,并将其添加到我的框架中,但是我不知道如何在新项目中使用它。
我该如何正确地在我的新项目中使用GPUImage?
我正在尝试制作一款相机/照片应用程序,它可以在图像上添加滤镜。我听说过Brad Larson的GPUImage,因此我下载了它并尝试操纵它以更加熟悉代码。
现在,我在Xcode中创建了一个新项目,并将其添加到我的框架中,但是我不知道如何在新项目中使用它。
我该如何正确地在我的新项目中使用GPUImage?
我不知道我如何能够比我在GitHub项目的第一页和README.md中“添加框架到您的iOS项目”部分中提供的逐步说明更加清晰明了:
一旦你获得了最新版本的框架源代码,将其添加到应用程序中就相当简单。首先,将GPUImage.xcodeproj文件拖到您的应用程序的Xcode项目中以将框架嵌入到您的项目中。接下来,进入您应用程序的目标并将GPUImage添加为目标依赖项。最后,您需要将GPUImage框架的Products文件夹中的libGPUImage.a库拖到应用程序目标的Link Binary With Libraries构建阶段中。
GPUImage需要链接到您的应用程序中的其他几个框架,因此您需要将以下内容作为链接库添加到应用程序目标中:
- CoreMedia
- CoreVideo
- OpenGLES
- AVFoundation
- QuartzCore
您还需要找到框架头文件,因此在您项目的构建设置中,将Header Search Paths设置为相对路径,从应用程序到GPUImage源目录中的framework/子目录。将此头搜索路径设置为递归。
要在应用程序中使用GPUImage类,只需使用以下内容包含核心框架头文件:
#import "GPUImage.h"
作为说明:如果您在使用Interface Builder构建界面时遇到“在接口生成器中未知的类GPUImageView”等错误,可能需要在项目的构建设置中添加-ObjC到其他链接器标志中。以下是如何在 Xcode 中使用视觉指导,使用 Swift 5 编写适用于 iOS 的代码:
开始之前有两件事情需要注意:
1- 前往 GPUImage GitHub 页面
2- 在右上角,点击绿色的 Code
按钮,然后点击 Download Zip
3- 在您当前的Xcode项目中(即要使用GPUImage的项目),单击蓝色项目图标下面的第一个文件夹。
4- 然后转到 Xcode 顶部,点击 文件
> 将文件添加到 "yourProject"
5- 当新窗口出现时,转到下载
(或您在第二步中下载GPUImage的任何位置)> GPUImage3-master
> framework
> GPUImage.xcodeproj
,然后单击添加
。重要的是确保选中复制项目(如果需要)
和创建组
。
6- 现在您将在步骤3中相同的文件夹下,在Xcode项目中看到GPUImage.xcodeproj
(无需对其进行任何操作)。
7- 点击您的主项目的蓝色项目图标
>构建阶段
,中央面板应该在TARGETS
上。确保您不要点击GPUImage.xcodeproj,那是错误的文件夹。
8- 仍然在“Build Phases”下,点击Dependencies
,然后点击加号
9- 当弹出窗口出现时,选择 GPUImage_iOS
然后选择 Add
(确保选择的是 iOS 版本而不是 macOS 版本)
10- 现在你会在Dependencies
下看到GPUImage_iOS
的依赖项(这里不需要做任何操作)
11-现在,在仍然在Build Phases
下的情况下,点击Link Binary with Libraries
,然后点击加号
12- 当弹出窗口出现在工作区下方时 > 从GPUImage中选择'GPUImage_iOS'目标下的GPUImage.framework ...
,然后按Add
按钮(确保您选择的是版本而不是macOS版本)
13- 现在图书馆已经链接(此处无需进行任何操作)
14(a)- 这很重要,如果在“Build Phases”下面没有“Copy Files”文件夹,那么请转到Xcode的顶部并选择Editor
> Add Build Phase
> Add Copy Files Build Phase
。如果文件夹已经存在,则如果文件夹已经存在,我不确定该怎么做。对于我来说,最初并没有出现“Copy Files”文件夹,我需要使用步骤14(b)创建它。我假设如果它已经存在,只需打开它并继续第16步。
14(b)- 如果由于某种原因 Add Copy Files Build Phase
变成了 灰色,请执行此操作或者在 Build Phases
下,在左上角按下 加号
,然后选择 New Copy Files Phase
15- 现在您将看到一个全新的 Copy Files
目录,位于 Build Phases 下面
16- 如果 复制文件
没有打开,请按切换按钮以打开它,然后在 目的地
旁边将 资源
更改为 框架
18- 现在 GPUImage.framework
刚刚添加到了 Copy Files
中。
19- 您的构建阶段屏幕应该看起来像这样
20- 清理项目 Shift+Command+K
21- 在您打算在其中使用GPUImage的任何文件中,转到顶部并输入import GPUImage
(它应该开始出现在自动完成下),然后构建您的项目。
22- 测试GPUImage中的一个类和方法是否能在您的项目中正常工作
// nothing is supposed to actually happen here, just test to see if the SmoothToonFilter() class and filterWithOperation() method are recognized without any errors
let testImage = UIImage(named:"some_image_from_your_assets")!
let toonFilter = SmoothToonFilter()
let _ = testImage.filterWithOperation(toonFilter)
完成!