【问题标题】:How do you add GPUImage to an iOS project?如何将 GPUImage 添加到 iOS 项目中?
【发布时间】:2012-09-18 17:30:43
【问题描述】:

我正在尝试制作一个相机/照片应用程序,该应用程序将在图像上添加过滤器。我听说过 Brad Larson 的 GPUImage,所以我下载了它并尝试对其进行操作以更熟悉代码。

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

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

【问题讨论】:

标签: objective-c ios gpuimage


【解决方案1】:

我不知道我怎么能比我在the very first page of the GitHub project 和“将框架添加到您的 iOS 项目”部分下的 README.md 中的分步说明更清楚:

一旦你有了框架的最新源代码,它就相当 直接将其添加到您的应用程序中。首先拖动 将 GPUImage.xcodeproj 文件嵌入到应用程序的 Xcode 项目中 您项目中的框架。接下来,转到您的应用程序的目标 并将 GPUImage 添加为目标依赖项。最后,您需要拖动 GPUImage 框架产品中的 libGPUImage.a 库 文件夹到 Link Binary With Libraries 构建阶段 应用程序的目标。

GPUImage 需要一些其他框架才能链接到您的 应用程序,因此您需要将以下内容添加为链接库 在您的应用程序目标中:

  • CoreMedia
  • CoreVideo
  • OpenGLES
  • AVFoundation
  • 石英核心

您还需要找到框架标头,因此在您的 项目的构建设置将标题搜索路径设置为相对 从应用程序到 framework/ 子目录的路径 GPUImage 源目录。使此标头搜索路径递归。

要在您的应用程序中使用 GPUImage 类,只需包括 核心框架标头使用以下内容:

#import "GPUImage.h"

注意:如果您遇到错误“Unknown class GPUImageView in Interface Builder”等尝试构建接口时 Interface Builder,您可能需要将 -ObjC 添加到您的 Other Linker 项目构建设置中的标志。

此外,如果您需要将其部署到 iOS 4.x,看起来 当前版本的 Xcode (4.3) 要求您弱链接核心 最终应用程序中的视频框架,或者您看到崩溃 消息“找不到符号:_CVOpenGLESTextureCacheCreate”,当您 创建存档以上传到 App Store 或临时 分配。为此,请转到项目的 Build Phases 选项卡, 展开 Link Binary With Libraries 组,然后找到 CoreVideo.framework 在列表中。在远处更改它的设置 列表右侧从必需到可选。

另外,这是一个支持 ARC 的框架,所以如果你想使用 这在针对 iOS 4.x 的手动引用计数应用程序中, 您还需要将 -fobjc-arc 添加到您的其他链接器标志中。

要查看它的实际效果,请查看我随框架提供的许多示例应用程序中的任何一个。

【讨论】:

  • 我对此有点困惑,“所以在您的项目的构建设置中,将标头搜索路径设置为从您的应用程序到 GPUImage 源目录中 framework/ 子目录的相对路径。进行此标头搜索路径递归。”
  • 我遇到了这些错误“'GPUImage.h' file not found”和“Apple LLVM compiler 3.1 Error”
  • 我已经修复了 LLVM 问题,但我的项目仍然没有读取 GPUImage.h。
  • @LakanBahande - 在此处查看我的答案:stackoverflow.com/a/10405139/19679 和此处:stackoverflow.com/questions/10260291/…
  • 先生!谢谢!我现在已经设法使用它了!但我这里还有另一个问题:stackoverflow.com/questions/12722880/…
【解决方案2】:

请阅读此页面http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework 和此:https://github.com/BradLarson/GPUImage

注意:很简单,你可以将framework/source文件夹中的所有源代码文件复制到你的项目中,并导入GPUImage.h来使用。

问候!

【讨论】:

    【解决方案3】:

    可能最简单的将 GPUImage 集成到项目中的方法是通过 。尽管 Brad 实际上并未维护 GPUImage CocoaPods 存储库,但它的维护非常定期,它使集成变得轻而易举。

    > Go get it

    【讨论】:

      【解决方案4】:

      以下是在 Xcode 中的 Swift 5 中为 iOS 使用 Visual Directions 的方法:

      开始之前的两件事。

      • 您应该在项目的复制/复制上开始此过程,直到正确为止(我尝试了几次),或者甚至从一个新项目开始。如果出现问题,您希望保持原始项目完好无损
      • 如果您打开了一个项目,其中包含您尝试复制的 GPUImage,请确保先将其关闭。你会得到一个错误,说有一个项目已经打开了

      1-转到GPUImagegitHub page

      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 NeededCreate groups

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

      7- 点击你的 ma​​in 项目的blue project icon > Build Phases 并且中间/中心窗格应该在TARGETS 上。确保您不要单击 GPUImage.xcodeproj,即 WRONG 文件夹

      8- 在 Build Phases 下单击 Dependencies 然后单击 plus sign

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

      10- 您现在将在 Dependencies 下看到 GPUImage_iOS 依赖项(此处无需执行任何操作)

      11 - 现在在Build Phases 下单击Link Binary 与库,然后单击plus sign

      12- 当弹出窗口出现在 Workspace > GPUImage > 选择 GPUImage.framework from 'GPUImage_iOS' target ... 然后按 Add(确保选择 iOS 版本而不是macOS 版本)

      13- 现在库已链接(此处无需执行任何操作)

      14(a)- 这很重要,如果在 Build Phases 下没有 Copy Files 文件夹,则转到 Xcode 顶部并选择 Editor > Add Build Phase > @987654396 @。如果文件夹已经存在如果文件夹已经存在我不知道该怎么办Copy Files 文件夹最初并不适合我,我是使用步骤 14(b) 创建的。如果它已经存在,我会假设打开它并继续第 16 步

      14(b)- 如果由于某种原因Add Copy Files Build Phase变灰do this 或在Build Phases 下方,请在左上角按plus sign,然后选择@ 987654400@

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

      16- 如果Copy Files 尚未打开,请按切换按钮将其打开,然后将Destination 旁边的Resources 更改为Framework

      17- 在Copy Files下,按下plus sign,出现弹窗时,如果这是iOS项目,在Products下,选择top GPUImage.framework 并按添加。这最后一步在布拉德的指导下

      添加一个新的 Copy Files 构建阶段,将其目标设置为 Frameworks, 并添加 上层 GPUImage.framework (for iOS) 或更低 GPUImage.framework (for 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)
      

      完成!

      【讨论】:

      • 比公认的答案好得多。感谢您为创建此视觉指南所做的努力。
      • @mkeremkeskin 当我找到接受的答案时,我迷路了。我花了几个小时才弄清楚如何真正做到这一点。接受的答案使它看起来像 1-2-3,我敢肯定这是为以前做过类似事情的人准备的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多