我正在尝试制作一个相机/照片应用程序,它将在图像上添加过滤器。我听说过 Brad Larson 的 GPUImage,所以我下载了它并尝试操作它以更熟悉代码。
现在,我在 Xcode 中创建了一个新项目并将其添加到我的框架中,但我不知道如何在新项目中使用它。
如何在我的新项目中正确使用 GPUImage?
我正在尝试制作一个相机/照片应用程序,它将在图像上添加过滤器。我听说过 Brad Larson 的 GPUImage,所以我下载了它并尝试操作它以更熟悉代码。
现在,我在 Xcode 中创建了一个新项目并将其添加到我的框架中,但我不知道如何在新项目中使用它。
如何在我的新项目中正确使用 GPUImage?
我不知道我怎么能比我在 GitHub 项目的第一页和“将框架添加到您的 iOS 项目”部分下的 README.md 中的分步说明更清楚:
一旦您获得了该框架的最新源代码,就可以非常简单地将其添加到您的应用程序中。首先将 GPUImage.xcodeproj 文件拖到应用程序的 Xcode 项目中,以将框架嵌入到项目中。接下来,转到应用程序的目标并将 GPUImage 添加为目标依赖项。最后,您需要将 libGPUImage.a 库从 GPUImage 框架的 Products 文件夹拖到应用程序目标中的 Link Binary With Libraries 构建阶段。
GPUImage 需要一些其他框架才能链接到您的应用程序中,因此您需要在应用程序目标中添加以下内容作为链接库:
- 核心媒体
- 核心视频
- OpenGLES
- AV基金会
- 石英芯
您还需要找到框架标头,因此在项目的构建设置中,将标头搜索路径设置为从应用程序到 GPUImage 源目录中 framework/ 子目录的相对路径。使此标头搜索路径递归。
要在您的应用程序中使用 GPUImage 类,只需使用以下内容包含核心框架标头:
#import "GPUImage.h"
注意:如果您在尝试使用 Interface Builder 构建界面时遇到错误“Unknown class GPUImageView in Interface Builder”等,您可能需要在项目的构建设置中将 -ObjC 添加到您的 Other Linker Flags 中。
此外,如果您需要将其部署到 iOS 4.x,当前版本的 Xcode (4.3) 似乎要求您在最终应用程序中弱链接 Core Video 框架,否则您会看到崩溃并显示消息“未找到符号” : _CVOpenGLESTextureCacheCreate" 当您创建存档以上传到 App Store 或进行临时分发时。为此,请转到项目的 Build Phases 选项卡,展开 Link Binary With Libraries 组,然后在列表中找到 CoreVideo.framework。将列表最右侧的设置从必需更改为可选。
此外,这是一个支持 ARC 的框架,因此如果您想在针对 iOS 4.x 的手动引用计数应用程序中使用它,您还需要将 -fobjc-arc 添加到您的其他链接器标志中。
要查看实际情况,请查看我随框架提供的许多示例应用程序中的任何一个。
请阅读此页面http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework和此:https ://github.com/BradLarson/GPUImage
注意:简单来说,你可以将framework/source文件夹中的所有源代码文件复制到你的项目中,并导入GPUImage.h来使用。
问候!
将 GPUImage 集成到项目中的最简单的方法可能是通过cocopods。尽管 Brad 实际上并未维护 GPUImage CocoaPods 存储库,但它的维护非常定期,它使集成变得轻而易举。
>
去实现它(梦想);去得到它(东西以下是如何在Xcode for iOS的Swift 5中使用 Visual Directions 执行此操作:
在你开始之前有两件事。
1- 转到 GPUImage gitHub 页面
2-在右上角,单击绿色Code
按钮,然后单击Download Zip
3- 在您当前的 Xcode 项目(您要使用 GPUImage 的项目)中单击蓝色项目图标下方的第一个文件夹
4-之后转到Xcode的顶部并单击File
>Add Files to "yourProject"
5-当新窗口出现时,转到Downloads
(或您在第二步中下载 GPUImage 的任何位置)> GPUImage3-master
> framework
>GPUImage.xcodeproj
然后单击Add
。确保Copy Items if Needed
并Create groups
接受检查很重要。
6-您现在将GPUImage.xcodeproj
在第 3 步中的同一文件夹下看到您的 Xcode 项目(无需对其进行任何操作)
7-单击您的主项目的blue project icon
>Build Phases
并且中间/中心窗格应该打开TARGETS
。确保不要单击GPUImage.xcodeproj,即错误文件夹
8-仍在构建阶段下单击Dependencies
,然后单击plus sign
9-当弹出窗口出现时选择GPUImage_iOS
然后选择Add
(确保选择iOS版本而不是 macOS 版本)
10-您现在将看到下面的GPUImage_iOS
依赖项Dependencies
(此处无需执行任何操作)
11 - 现在仍然在Build Phases
单击Link Binary
库,然后单击plus sign
12-当弹出窗口出现在Workspace > GPUImage > selectGPUImage.framework from 'GPUImage_iOS' target ...
然后按Add
(确保选择iOS
版本而不是 macOS 版本)
13-现在图书馆已链接(无需在这里做任何事情)
14(a)- 这很重要,如果在 Build Phases 下没有Copy Files 文件 夹,则转到 Xcode 顶部并选择Editor
> Add Build Phase
> Add Copy Files Build Phase
。如果文件夹已经存在,我不确定如果文件夹已经存在该怎么办。Copy Files 文件夹最初并不适合我,我使用步骤 14(b) 创建了它。我假设它是否已经存在,只需打开它并继续执行第 16 步
Add Copy Files Build Phase
14(b)-如果由于某种原因变灰,请执行此操作或在Build Phases
左上角按plus sign
,然后选择New Copy Files Phase
Copy Files
15- 现在您将在 Build Phases 下看到一个全新的目录
16-如果Copy Files
尚未打开,请按切换按钮将其打开,然后Destination
更改Resources
为Framework
17- 在 下Copy Files
,按plus sign
,当弹出窗口出现时,如果这是一个iOS项目,在 下Products
,选择顶部 GPUImage.framework
并按添加。最后一步是在布拉德的指导下
添加一个新的 Copy Files 构建阶段,将其目标设置为 Frameworks,并将上层 GPUImage.framework(适用于 iOS)或下层 GPUImage.framework(适用于 Mac)添加到该阶段
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)
完毕!