如何将GPUImage添加到iOS项目中?

6

我正在尝试制作一款相机/照片应用程序,它可以在图像上添加滤镜。我听说过Brad Larson的GPUImage,因此我下载了它并尝试操纵它以更加熟悉代码。

现在,我在Xcode中创建了一个新项目,并将其添加到我的框架中,但是我不知道如何在新项目中使用它。

我该如何正确地在我的新项目中使用GPUImage?


我在这里添加了详细的步骤和图片:https://dev59.com/KGkv5IYBdhLWcg3wvDXq#21896243 看看是否有帮助。 - Raja Rao
4个回答

16

我不知道我如何能够比我在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到其他链接器标志中。
此外,如果您需要将其部署到iOS 4.x,则当前版本的Xcode(4.3)需要在最终应用程序中弱链接Core Video框架,否则在创建上传到应用商店或自定义分发的存档时会看到崩溃消息“符号未找到:_CVOpenGLESTextureCacheCreate”。要执行此操作,请转到项目的“Build Phases”选项卡,展开“Link Binary With Libraries”组,并在列表中查找CoreVideo.framework。将其在列表最右侧的设置从“Required”更改为“Optional”。
此外,这是一个启用ARC的框架,因此如果您想在针对iOS 4.x的手动引用计数应用程序中使用它,还需要将-fobjc-arc添加到其他链接器标志中。
要查看此操作过程,请查看我随框架一起提供的许多示例应用程序之一。

2
我对这个“所以在项目的构建设置中将头文件搜索路径设置为从应用程序到GPUImage源目录中的框架/子目录的相对路径有些困惑。使此头文件搜索路径递归。”感到有些困惑。 - Lakan Bahande
1
@LakanBahande - 请参考我在这里的回答: https://dev59.com/KGkv5IYBdhLWcg3wvDXq#10405139 和 https://dev59.com/T2kv5IYBdhLWcg3w6lDj#10261140 - Brad Larson
在归档时出现“找不到符号:_CVOpenGLESTextureCacheCreate”崩溃错误,而非运行时? - Kyokook Hwang
@KyokookHwang - 它发生在运行时,但仅当您构建存档或用于在应用商店上分发时才会发生。我还相信这只会发生在特定版本的Xcode中。 - Brad Larson
我认为你应该为它创建一个Pod文件。 - GeneCode
显示剩余5条评论

5

4

以下是如何在 Xcode 中使用视觉指导,使用 Swift 5 编写适用于 iOS 的代码:

开始之前有两件事情需要注意:

  • 在进行此过程时,您应该在您的项目的副本/复制品上开始,直到您做正确为止(我尝试了几次),甚至可以从一个新项目开始。如果出现问题,您希望保留原始项目。
  • 如果您正在尝试复制其中包含 GPUImage 的项目,请确保先关闭它。否则,您将收到一个错误消息,说已经打开了这个项目。

enter image description here

1- 前往 GPUImage GitHub 页面

2- 在右上角,点击绿色的 Code 按钮,然后点击 Download Zip

enter image description here

3- 在您当前的Xcode项目中(即要使用GPUImage的项目),单击蓝色项目图标下面的第一个文件夹。

enter image description here

4- 然后转到 Xcode 顶部,点击 文件 > 将文件添加到 "yourProject"

enter image description here

5- 当新窗口出现时,转到下载(或您在第二步中下载GPUImage的任何位置)> GPUImage3-master > framework > GPUImage.xcodeproj,然后单击添加。重要的是确保选中复制项目(如果需要)创建组

enter image description here

6- 现在您将在步骤3中相同的文件夹下,在Xcode项目中看到GPUImage.xcodeproj(无需对其进行任何操作)。

enter image description here

7- 点击您的项目的蓝色项目图标>构建阶段,中央面板应该在TARGETS上。确保您不要点击GPUImage.xcodeproj,那是错误的文件夹。

enter image description here

8- 仍然在“Build Phases”下,点击Dependencies,然后点击加号

enter image description here

9- 当弹出窗口出现时,选择 GPUImage_iOS 然后选择 Add (确保选择的是 iOS 版本而不是 macOS 版本)

enter image description here

10- 现在你会在Dependencies下看到GPUImage_iOS的依赖项(这里不需要做任何操作)

enter image description here

11-现在,在仍然在Build Phases下的情况下,点击Link Binary with Libraries,然后点击加号

enter image description here

12- 当弹出窗口出现在工作区下方时 > 从GPUImage中选择'GPUImage_iOS'目标下的GPUImage.framework ...,然后按Add按钮(确保您选择的是版本而不是macOS版本)

enter image description here

13- 现在图书馆已经链接(此处无需进行任何操作)

enter image description here

14(a)- 这很重要,如果在“Build Phases”下面没有“Copy Files”文件夹,那么请转到Xcode的顶部并选择Editor > Add Build Phase > Add Copy Files Build Phase。如果文件夹已经存在,则如果文件夹已经存在,我不确定该怎么做。对于我来说,最初并没有出现“Copy Files”文件夹,我需要使用步骤14(b)创建它。我假设如果它已经存在,只需打开它并继续第16步

enter image description here

14(b)- 如果由于某种原因 Add Copy Files Build Phase 变成了 灰色请执行此操作或者在 Build Phases 下,在左上角按下 加号,然后选择 New Copy Files Phase

enter image description here

15- 现在您将看到一个全新的 Copy Files 目录,位于 Build Phases 下面

enter image description here

16- 如果 复制文件 没有打开,请按切换按钮以打开它,然后在 目的地 旁边将 资源 更改为 框架

enter image description here

在“复制文件”下,同时按下“加号”,当弹出窗口出现时,如果这是一个iOS项目,在“产品”下选择顶部的“GPUImage.framework”,然后按“添加”。这最后一步是根据Brad的指示进行的。
“添加新的复制文件构建阶段,将其目标设置为框架,并将上部GPUImage.framework(用于iOS)或下部GPUImage.framework(用于Mac)添加到其中。”

enter image description here

18- 现在 GPUImage.framework 刚刚添加到了 Copy Files 中。

enter image description here

19- 您的构建阶段屏幕应该看起来像这样

enter image description here

20- 清理项目 Shift+Command+K

21- 在您打算在其中使用GPUImage的任何文件中,转到顶部并输入import GPUImage(它应该开始出现在自动完成下),然后构建您的项目。

enter image description here

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)

enter image description here

完成!


1
比被接受的答案好多了。感谢您为创建这个视觉指南所付出的努力。 - mkeremkeskin
当我找到被接受的答案时,我感到很困惑。花了我几个小时才弄清楚如何实际操作。被接受的答案让它看起来像是小菜一碟,但我相信对于之前做过类似事情的人来说可能就是这样。 - Lance Samaria

3

将GPUImage集成到您的项目中最简单的方法之一是通过。虽然GPUImage CocoaPods仓库实际上并不是由Brad维护的,但它的维护非常定期,使集成变得轻而易举。

> 去获取它


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接