はじめに
こんにちは。すぎもんです。😀
DataSpider Servistaを使用して、Base64エンコードされたJPEGファイルをデコードしてみました。
DataSpiderを用いて画像認証サービスへ連携する際に以下のような処理手順が必要な場合に利用します。
1.スマートフォンアプリ→DataSpiderへBase64エンコードされたデータを送信
2.DataSpiderのスクリプトで画像ファイルへデコード
3.連携先画像認証サービスの指定の暗号化形式で画像ファイルを再暗号化
4. Amazon Rekognition等画像認識サービスへの連携
本記事ではメインに2.DataSpiderのスクリプトで画像ファイルへデコード、HTTPトリガーで受信したBase64データをJPEG画像ファイルを画像へ変換する方法を紹介します
今回やること
DataSpiderで以下の検証を実施します
1.HTTPトリガーでBase64データをJSON形式で受信
2.スクリプトでBase64データをJPEGファイルへデコード
検証手順
DataSpiderの設定
1.JPEG生成スクリプトの作成
検証用のプロジェクトとスクリプトを新規作成していきます。
DataSpider Studioのデスクトップから 「新規プロジェクト」 を選択します。
[プロジェクト名] フィールドに任意の名前、今回はTESTJPEG
と入力し [次へ] を押下して進みます。
[スクリプト名] フィールドにも任意の名前、今回はBASE64TOJPEG
と入力し [完了] を押下します。
スクリプト内で使用するBase64データ用のスクリプト変数を新規作成します。
[変数名] フィールドは任意の名前、今回はBASE64DATA
と入力
[変数型] 文字列型
を選択
[完了] を押下します。
デザイナ画面右側にあるツールパレットの 「ファイル」 カテゴリから [ファイルシステム]-[ファイルシステム書き込み] オペレーションを選択し、デザイナ中央部分にドラッグ&ドロップします。
名前と必須設定の項目に下記の通り入力し、
項目名 | 設定値 | 説明 |
---|---|---|
名前 | JPEG生成 | スクリプトキャンバス上での名前を入力します |
ディレクトリ | /data/TEST/jpeg | JPEGファイルを生成するDataSpiderファイルシステムのディレクトリパスを入力します。 |
デザイナ画面右側にあるツールパレットの 「変換」 カテゴリから [基本]-[マッピング] アイコンを選択し、先に置いた [JPEG生成] アイコンの左へドラッグ&ドロップします。
[mapping] から [JPEG生成] ドラッグ&ドロップして線を引きます。
**[プロセスフローとデータフローを引く]にチェックを入れ **[OK]**をクリックします。
[mapping] をダブルクリックしてマッピング画面を表示し、入力元スクリプト変数[BASE64DATA] から 出力先 [(data⁼)column] へドラッグ&ドロップして線を引きます。
デザイナ画面右側にあるツールパレットの 「文字列」 カテゴリから [基本]-[単一行文字列定数] アイコンを選択し、キャンバスへドラッグ&ドロップします。
必須設定とコメントの項目に下記の通り入力し、
項目名 | 設定値 | 説明 |
---|---|---|
一行文字列 | file | 固定値「file」を入力します |
コメント | file | 識別のために一行文字列と同値を入力します。 |
デザイナ画面右側にあるツールパレットの 「文字列」 カテゴリから [基本]-[単一行文字列定数] アイコンを選択し、キャンバスへドラッグ&ドロップします。
必須設定とコメントの項目に下記の通り入力し、
項目名 | 設定値 | 説明 |
---|---|---|
一行文字列 | Testpen.jpg | 任意のファイル名を入力します。 |
コメント | Testpen.jpg | 識別のために一行文字列と同値を入力します。 |
作成した 「file」 と 「Testpen.jpg」 アイコンから 出力先 [(filetype)] と [(pass)] へそれぞれドラッグ&ドロップして線を引きます。
次にHTTPトリガーからBase64データを受けとるためのXML型のスクリプト入力変数を作成します。
DataSpiderでHTTPトリガーからJSONデータを受け取るための変数型はXML型で設定する必要があります。
[変数名] フィールドは任意の名前、今回はIN_base64
と入力
[変数型] XML型
を選択
[スクリプト入力変数として使用する][必須] にチェック
[完了] を押下します。
デザイナ画面右側にあるツールパレットの 「基本」 カテゴリから [処理]-[変数代入] アイコンを選択し、先に置いたmapping
アイコンの左へドラッグ&ドロップして配置し、
[Start] から [variable] 、 [mappping] までドラッグ&ドロップして線を引きます。
[variable] をダブルクリックして変数代入画面を表示します。
[入力元]配下に表示されている入力変数IN_base64
へスキーマを設定します。
① [root] 配下に属性[type] を追加
② [root] 配下に子要素 を追加。HTTPトリガーで受け取るBase64データのパラメータ名、今回はphotoimage
という名前で連携されてくると仮定して同値を入力
③追加した子要素配下に属性[type] を追加
入力元の子要素photoimage
と出力先のスクリプト変数base64data
をドラッグ&ドロップして線を引きます。
[JPEG生成] から [End] までドラッグ&ドロップして線を引きます。これでスクリプトの完成です。
2.プロジェクトのサービス登録
作成したスクリプトをHTTPトリガーから起動させるためには、プロジェクトのサービス登録が必要です。
[メニュー] [ファイル] から [プロジェクトをサービスして登録] を押下します。
[次へ] を押下します。
[完了] をクリックしてプロジェクトが登録されたことを確認します。
登録済みサービスを上書きする場合は、内容を確認して問題なければ完了させます。
3.HTTPトリガーの作成
最後にHTTPトリガーを作成していきます。[DataSpiderStudio] のメニューから [マイトリガー] を起動します。
[新しいHTTPトリガーを作成する] をクリックします。
[トリガー名] 任意の名前、今回はtestjpeg
と入力
[実行パス] 任意の名前、トリガー名と同名を入力
[次へ] を押下します。
[サービス名] 登録したサービス名が表示されていることを確認
[スクリプト] 作成したスクリプト名が表示されていることを確認
[スクリプト引数] の [値] にHTTPトリガー変数として 入力データを設定します。
[完了] を押下します。
[マイトリガー] 画面でトリガー名でtestjpeg
のHTTPトリガーが登録されていることを確認します。
検証用データ準備
1.画像のBase64データ準備
本来であれば顔や手の生体認証系に必要なデータが望ましいですが、今回はテストデータとして「赤ペン」の画像を用意しました。
Base64のエンコードツールを用いて画像ファイルをBase64のデータへ変換します。
エンコードツールの例は下記です、
Base64エンコード/デコードツール
2.JSONデータ準備
HTTPトリガー実行時で読込むJSONファイルを用意します。
今回はtestjpeg.Json
を用意しました。
パラメータphotoimage
にBase64エンコードした値を設定します
HTTPトリガーの実行
今回はWindowsPowerdhellで HTTP の実行要求を送信する [Invoke-RestMethod] を使用して作成したHTTPトリガーを実行します。
Invoke-RestMethodリファレンス
$uri = 'http://127.0.0.1:7700/dataspider/trigger/testjpeg'
$bodypath = 'C:\work\test\testjpeg.json'
$body = Get-Content $bodyPath -RAW -Encoding UTF8
Invoke-RestMethod -Method Post -Uri $uri -Body $body -ContentType 'application/json'
実行結果確認
ローカルシステムのマウント元フォルダに対象のJPEGファイルが生成されていることが確認できます。
おわりに
いかがだったでしょうか。
当ブログではDataSpiderで画像ファイルを受信、変換する方法について一例を紹介してきました。
AWSの画像認識サービスであるAmazon Rekognitionとの連携や連携先サービスの仕様により画像ファイルの暗号化が必要な場合には下記ブログもご参照いただければと思います。
DataSpiderでPythonのスクリプトを実行してみた
ここまで読んでいただきありがとうございました。それでは、また!