画像にフィルターを追加するカメラ/写真アプリを作成しようとしています。Brad LarsonのGPUImageについて聞いたことがあるので、それをダウンロードして、コードに慣れるように操作しようとしました。
今、私はXcodeで新しいプロジェクトを作成し、それをフレームワークに追加しましたが、新しいプロジェクトでそれをどのように使用するかわかりません。
新しいプロジェクトでGPUImageを適切に使用するにはどうすればよいですか?
画像にフィルターを追加するカメラ/写真アプリを作成しようとしています。Brad LarsonのGPUImageについて聞いたことがあるので、それをダウンロードして、コードに慣れるように操作しようとしました。
今、私はXcodeで新しいプロジェクトを作成し、それをフレームワークに追加しましたが、新しいプロジェクトでそれをどのように使用するかわかりません。
新しいプロジェクトでGPUImageを適切に使用するにはどうすればよいですか?
GitHubプロジェクトの最初のページとREADME.mdの「iOSプロジェクトへのフレームワークの追加」セクションに記載したステップバイステップの手順よりもはるかに明確にできる方法がわかりません。
フレームワークの最新のソースコードを入手したら、それをアプリケーションに追加するのはかなり簡単です。GPUImage.xcodeprojファイルをアプリケーションのXcodeプロジェクトにドラッグして、プロジェクトにフレームワークを埋め込むことから始めます。次に、アプリケーションのターゲットに移動し、GPUImageをターゲット依存関係として追加します。最後に、libGPUImage.aライブラリをGPUImageフレームワークのProductsフォルダーから、アプリケーションのターゲットのLink BinaryWithLibrariesビルドフェーズにドラッグする必要があります。
GPUImageは、アプリケーションにリンクするために他のいくつかのフレームワークを必要とするため、アプリケーションターゲットにリンクライブラリとして以下を追加する必要があります。
- CoreMedia
- CoreVideo
- OpenGLES
- AVFoundation
- QuartzCore
フレームワークヘッダーも見つける必要があるため、プロジェクトのビルド設定内で、ヘッダー検索パスを、アプリケーションからGPUImageソースディレクトリ内のframework/サブディレクトリへの相対パスに設定します。このヘッダー検索パスを再帰的にします。
アプリケーション内でGPUImageクラスを使用するには、以下を使用してコアフレームワークヘッダーを含めるだけです。
#import "GPUImage.h"
注:Interface Builderを使用してインターフェイスを構築しようとしたときに、「Interface Builderの不明なクラスGPUImageView」などのエラーが発生した場合は、プロジェクトのビルド設定で他のリンカーフラグに-ObjCを追加する必要があります。
また、これをiOS 4.xにデプロイする必要がある場合、現在のバージョンのXcode(4.3)では、最終的なアプリケーションでコアビデオフレームワークを弱くリンクする必要があるようです。そうしないと、「シンボルが見つかりません」というメッセージが表示されてクラッシュします。 :_CVOpenGLESTextureCacheCreate "は、AppStoreへのアップロードまたはアドホック配布用のアーカイブを作成する場合に使用します。これを行うには、プロジェクトの[ビルドフェーズ]タブに移動し、[バイナリとライブラリのリンク]グループを展開して、リストからCoreVideo.frameworkを見つけます。リストの右端にある設定を必須からオプションに変更します。
さらに、これはARC対応のフレームワークであるため、iOS 4.xを対象とする手動参照カウントアプリケーション内でこれを使用する場合は、他のリンカーフラグにも-fobjc-arcを追加する必要があります。
これが実際に動作していることを確認するには、フレームワークに付属している多くのサンプルアプリケーションのいずれかを見てください。
このページhttp://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-frameworkとこれをお読みください: https://github.com/BradLarson/GPUImage
注: フレームワーク/ソース フォルダー内のすべてのソース コード ファイルをプロジェクトにコピーし、GPUImage.h をインポートして使用するだけです。
よろしく!
Visual Directions を使用してXcode for iOSのSwift 5でそれを行う方法は次のとおりです。
始める前に 2 つのこと。
1- GPUImage gitHub ページに移動します
2- 右上隅にある緑色のCode
ボタンをクリックしてから、Download Zip
3- 現在の Xcode プロジェクト (GPUImage を使用するプロジェクト) で、青いプロジェクト アイコンの下にある最初のフォルダーをクリックします。
4-その後、Xcodeの上部に移動してFile
>をクリックしますAdd Files to "yourProject"
5- 新しいウィンドウが表示されDownloads
たら (または 2 番目の手順で 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- Build Phases の下にある間Dependencies
にクリックしてから、plus sign
9-ポップアップが表示されたら、選択してGPUImage_iOS
から選択しますAdd
(macOSバージョンではなくiOSバージョンを選択してください)
10-GPUImage_iOS
依存関係が表示されDependencies
ます(ここでは何もする必要はありません)
11 -ライブラリをクリックしたまま、[ライブラリ] をクリックしますBuild Phases
。Link Binary
plus sign
12- ポップアップが[ワークスペース] > [ GPUImage]の下に表示されたら、 [選択]GPUImage.framework from 'GPUImage_iOS' target ...
を押します ( macOS のバージョンではなく、Add
必ずバージョンを選択してください)。iOS
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
、左上隅の を押してplus sign
から選択しますNew Copy Files Phase
Copy Files
15-ビルドフェーズの下に新しいディレクトリが表示されます
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)
終わり!