Anatomography Web API サンプルコード - Perl - パーツの色・不透明度・ズーム・削除指定

はじめに

全身像および複数のパーツの色・不透明度・ズーム・削除を指定して静止画を描画します。

サンプルコード

出力先ファイルは適宜変更して下さい。

#!/usr/bin/env perl
use strict;
use LWP::UserAgent;

# リクエスト先URL
my $serverURL = "http://lifesciencedb.jp/bp3d/API/";

# 描画リクエスト用のJSON文字列を作成
my $json = <<JSON;
{
	"Common":{
		"Version":"4.0",
		"TreeName":"isa"
	},
	"Part":[
		{
			"PartName":"anatomical entity",
			"PartOpacity":0.1,
			"UseForBoundingBoxFlag":false
		},
		{
			"PartName":"region of wall of heart",
			"PartColor":"FF0000",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"stomach",
			"PartOpacity":0.5,
			"PartColor":"FFFF00",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"kidney",
			"PartOpacity":0.5,
			"PartColor":"00FFFF",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"spleen",
			"PartOpacity":0.5,
			"PartColor":"0000FF",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"pancreas",
			"PartOpacity":0.5,
			"PartColor":"00FF00",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"rib",
			"PartDeleteFlag":true
		}
	]
}
JSON

# 出力
open OUT, ">partsproperties.png";
binmode(OUT);
print OUT  &getImage($json);	# 作成したJSONを利用して描画リクエスト
close OUT;

# 生成したJSONをパラメータとしてimageに対してGETリクエストするサブルーチン
sub getImage () {
	my $json = shift;
	my $userAgent = LWP::UserAgent->new;
	my $request = HTTP::Request->new('GET', $serverURL."image?".$json);
	my $response = $userAgent->request($request);
	return $response->content;
}

出力画像

以下、各ステップに関する説明です。

描画パーツの設定

# 描画リクエスト用のJSON文字列を作成
my $json = <<JSON;
{
	"Part":[
		{
			"PartName":"anatomical entity",
			"PartOpacity":0.1,
			"UseForBoundingBoxFlag":false
		},
		{
			"PartName":"region of wall of heart",
			"PartColor":"FF0000",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"stomach",
			"PartOpacity":0.5,
			"PartColor":"FFFF00",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"kidney",
			"PartOpacity":0.5,
			"PartColor":"00FFFF",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"spleen",
			"PartOpacity":0.5,
			"PartColor":"0000FF",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"pancreas",
			"PartOpacity":0.5,
			"PartColor":"00FF00",
			"UseForBoundingBoxFlag":true
		},
		{
			"PartName":"rib",
			"PartDeleteFlag":true
		}
	]
}
JSON
Partの配列の各要素が描画対象の臓器となっています。
1つ目が"anatomical entity"で、Opacity(不透明度)を0.1、Bounding Boxに利用しない設定としています。
2つ目が"region of wall of heart"で、描画色を"FF0000"(赤)、Bounding Boxに利用する設定としています。
3つ目が"stomach"で、描画色を"FFFF00"(黄)、Opacity(不透明度)を0.5、Bounding Boxに利用する設定としています。
4つ目が"kidney"で、描画色を"00FFFF"(水色)、Opacity(不透明度)を0.5、Bounding Boxに利用する設定としています。
5つ目が"spleen"で、描画色を"0000FF"(青)、Opacity(不透明度)を0.5、Bounding Boxに利用する設定としています。
6つ目が"pancreas"で、描画色を"00FF00"(緑)、Opacity(不透明度)を0.5、Bounding Boxに利用する設定としています。
7つ目が"rib"で、削除フラグを有効にしています。