作成したアプリは以下のように動作します。
作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/google-virtual-try-on.zip
Googleのサービスを呼び出すためのAPI認証については、以前の記事「GoogleのGemini APIをOracle APEXから呼び出す」でパッケージUTL_CRED_GOOGLEを紹介しています。
Virtual Try-OnはVertex AIのサービスのようなので、プロジェクトにサービス・アカウントを作ってAPI認証を行ないます。サービス・アカウントに作成した秘密キーをダウンロードし、その秘密キーよりAPI認証に使用するトークンを生成します。
以下は、秘密キーからトークンを生成してAPEXのWeb資格証明として登録するスクリプトです。APEXアプリケーションや公開するスクリプトに秘密キーを埋め込むと手違いで公開してしまうこともありえるので、手元のPCからSQLclやsqlplusでAPEXのワークスペース・スキーマに接続して実行することを想定しています。
作成したAPEXアプリケーションですが、ホーム・ページにすべての機能を実装しています。
Google Virtual Try-On APIに送信する画像を選択するページ・アイテムとして、P1_PERSON(人物の画像)とP1_PRODUCT(服の画像)を作成しています。タイプはイメージ・アップロード、ストレージのタイプは表APEX_APPLICATION_TEMP_FILESとします。選択した画像を送信せずにプレビューするため、記事「画像ビューワーのアプリを改良する」で紹介している動的アクションを実装しています。
ボタンTRY_ONをクリックすると、ページ・アイテムP1_PERSONとP1_PRODUCTに設定した画像がサーバーに送信されます。
サーバーでは以下のコードを実行し、GoogleのVirtual Try-On APIを呼び出します。呼び出しに使用した人物の画像、服の画像およびお試しの結果である画像は、APEXコレクションに保存します。
処理結果はページ・アイテムP1_PERSON_IMAGE、P1_PRODUCT_IMAGE、P1_TRY_ONに表示します。タイプとしてイメージの表示を選択し、設定の基準にSQLで戻されたBLOB列、SQL文として以下を記述します。c001の条件はPERSON、PRODUCT、TRYONのどれかになります。
select blob001 from apex_collections where collection_name = 'VIRTUAL_TRY_ON' and c001 = 'PERSON'
作成したアプリケーションの説明は以上になります。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完