2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DataSpiderでBase64エンコードされたJPEGファイルをデコードしてみた

Last updated at Posted at 2024-02-27

はじめに

こんにちは。すぎもんです。😀
DataSpider Servistaを使用して、Base64エンコードされたJPEGファイルをデコードしてみました。

DataSpiderを用いて画像認証サービスへ連携する際に以下のような処理手順が必要な場合に利用します。

1.スマートフォンアプリ→DataSpiderへBase64エンコードされたデータを送信
2.DataSpiderのスクリプトで画像ファイルへデコード
3.連携先画像認証サービスの指定の暗号化形式で画像ファイルを再暗号化
4. Amazon Rekognition等画像認識サービスへの連携

本記事ではメインに2.DataSpiderのスクリプトで画像ファイルへデコード、HTTPトリガーで受信したBase64データをJPEG画像ファイルを画像へ変換する方法を紹介します

image.png

今回やること

DataSpiderで以下の検証を実施します
1.HTTPトリガーでBase64データをJSON形式で受信
2.スクリプトでBase64データをJPEGファイルへデコード

検証手順

DataSpiderの設定

1.JPEG生成スクリプトの作成

検証用のプロジェクトとスクリプトを新規作成していきます。
DataSpider Studioのデスクトップから 「新規プロジェクト」 を選択します。
image.png
[プロジェクト名] フィールドに任意の名前、今回はTESTJPEGと入力し [次へ] を押下して進みます。
image.png

[スクリプト名] フィールドにも任意の名前、今回はBASE64TOJPEGと入力し [完了] を押下します。
image.png

スクリプト内で使用するBase64データ用のスクリプト変数を新規作成します。
[変数名] フィールドは任意の名前、今回はBASE64DATAと入力
[変数型] 文字列型を選択
[完了] を押下します。
image.png

デザイナ画面右側にあるツールパレットの 「ファイル」 カテゴリから [ファイルシステム]-[ファイルシステム書き込み] オペレーションを選択し、デザイナ中央部分にドラッグ&ドロップします。
image.png

名前と必須設定の項目に下記の通り入力し、

項目名 設定値 説明
名前 JPEG生成 スクリプトキャンバス上での名前を入力します
ディレクトリ /data/TEST/jpeg JPEGファイルを生成するDataSpiderファイルシステムのディレクトリパスを入力します。

[完了] を押下します。
image.png

ローカルファイルシステムのマウント元は下記になります。
image.png

デザイナ画面右側にあるツールパレットの 「変換」 カテゴリから [基本]-[マッピング] アイコンを選択し、先に置いた [JPEG生成] アイコンのへドラッグ&ドロップします。
image.png

[mapping] から [JPEG生成] ドラッグ&ドロップして線を引きます。
**[プロセスフローとデータフローを引く]にチェックを入れ **[OK]**をクリックします。

image.png

image.png

[mapping] をダブルクリックしてマッピング画面を表示し、入力元スクリプト変数[BASE64DATA] から 出力先 [(data⁼)column] へドラッグ&ドロップして線を引きます。
image.png

image.png

デザイナ画面右側にあるツールパレットの 「文字列」 カテゴリから [基本]-[単一行文字列定数] アイコンを選択し、キャンバスへドラッグ&ドロップします。
image.png

必須設定とコメントの項目に下記の通り入力し、

項目名 設定値 説明
一行文字列 file 固定値「file」を入力します
コメント file 識別のために一行文字列と同値を入力します。

[完了] を押下します。
image.png

デザイナ画面右側にあるツールパレットの 「文字列」 カテゴリから [基本]-[単一行文字列定数] アイコンを選択し、キャンバスへドラッグ&ドロップします。
image.png

必須設定とコメントの項目に下記の通り入力し、

項目名 設定値 説明
一行文字列 Testpen.jpg 任意のファイル名を入力します。
コメント Testpen.jpg 識別のために一行文字列と同値を入力します。

[完了] を押下します。
image.png

作成した 「file」「Testpen.jpg」 アイコンから 出力先 [(filetype)][(pass)] へそれぞれドラッグ&ドロップして線を引きます。
image.png

次にHTTPトリガーからBase64データを受けとるためのXML型のスクリプト入力変数を作成します。

DataSpiderでHTTPトリガーからJSONデータを受け取るための変数型はXML型で設定する必要があります。

[変数名] フィールドは任意の名前、今回はIN_base64と入力
[変数型] XML型を選択
[スクリプト入力変数として使用する][必須] にチェック
[完了] を押下します。
image.png

デザイナ画面右側にあるツールパレットの 「基本」 カテゴリから [処理]-[変数代入] アイコンを選択し、先に置いたmappingアイコンのへドラッグ&ドロップして配置し、
[Start] から [variable][mappping] までドラッグ&ドロップして線を引きます。

image.png

[variable] をダブルクリックして変数代入画面を表示します。
[入力元]配下に表示されている入力変数IN_base64へスキーマを設定します。
① [root] 配下に属性[type]
を追加
[root] 配下に子要素 を追加。HTTPトリガーで受け取るBase64データのパラメータ名、今回はphotoimageという名前で連携されてくると仮定して同値を入力
③追加した子要素配下に属性[type] を追加
image.png

入力元の子要素photoimageと出力先のスクリプト変数base64dataをドラッグ&ドロップして線を引きます。

image.png

[JPEG生成] から [End] までドラッグ&ドロップして線を引きます。これでスクリプトの完成です。

image.png

2.プロジェクトのサービス登録

作成したスクリプトをHTTPトリガーから起動させるためには、プロジェクトのサービス登録が必要です。
[メニュー] [ファイル] から [プロジェクトをサービスして登録] を押下します。
image.png
[次へ] を押下します。
image.png

[完了] をクリックしてプロジェクトが登録されたことを確認します。

登録済みサービスを上書きする場合は、内容を確認して問題なければ完了させます。

image.png

image.png

image.png

3.HTTPトリガーの作成

最後にHTTPトリガーを作成していきます。[DataSpiderStudio] のメニューから [マイトリガー] を起動します。

image.png

[新しいHTTPトリガーを作成する] をクリックします。
image.png
[トリガー名] 任意の名前、今回はtestjpegと入力
[実行パス] 任意の名前、トリガー名と同名を入力
[次へ] を押下します。

image.png
[サービス名] 登録したサービス名が表示されていることを確認
[スクリプト] 作成したスクリプト名が表示されていることを確認
[スクリプト引数][値] にHTTPトリガー変数として 入力データを設定します。
[完了] を押下します。
image.png

[はい] を押下します。
image.png

[マイトリガー] 画面でトリガー名でtestjpegのHTTPトリガーが登録されていることを確認します。
image.png

検証用データ準備

1.画像のBase64データ準備

本来であれば顔や手の生体認証系に必要なデータが望ましいですが、今回はテストデータとして「赤ペン」の画像を用意しました。

image.png

Base64のエンコードツールを用いて画像ファイルをBase64のデータへ変換します。

エンコードツールの例は下記です、
 Base64エンコード/デコードツール

2.JSONデータ準備

HTTPトリガー実行時で読込むJSONファイルを用意します。
今回はtestjpeg.Jsonを用意しました。
パラメータphotoimageにBase64エンコードした値を設定します

image.png

HTTPトリガーの実行

今回はWindowsPowerdhellで HTTP の実行要求を送信する [Invoke-RestMethod] を使用して作成したHTTPトリガーを実行します。
 Invoke-RestMethodリファレンス

トリガー実行用コマンド.txt
$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ファイルが生成されていることが確認できます。

ローカルファイルシステムのマウント元は下記になります。
image.png

image.png

image.png

[マイログ] からもトリガーより起動されたスクリプトが 正常終了 したことが確認できます。
image.png

おわりに

いかがだったでしょうか。
当ブログではDataSpiderで画像ファイルを受信、変換する方法について一例を紹介してきました。
AWSの画像認識サービスであるAmazon Rekognitionとの連携や連携先サービスの仕様により画像ファイルの暗号化が必要な場合には下記ブログもご参照いただければと思います。
 DataSpiderでPythonのスクリプトを実行してみた

ここまで読んでいただきありがとうございました。それでは、また!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?