TONY0922のブログ

学んだことを適当に記録していくブログです。主にRubyで仕事してます。最近はJavaScriptとObjectibe-C始めました。Titanium関連もちょいちょい触ってます。更新頻度はそんなに高くないので、ご了承下さい。

Titanium MobileでBase64でエンコードされた画像を表示。(Android/iPhone)

Titanium SDK:3.2.0
Alloy:1.3.0

サーバーからBase64エンコードされた画像データを表示したかったのだが、
AndroidiPhoneでハマったので、メモ。

// 画像取得先のURL(仮のもの)
var url = "http://hogehoge.com/getImage";

var xhr = Ti.Network.createHTTPClient({
	onload : function(e) {
		// レスポンスは{"img_string" : "Base64でエンコードされた文字列"}で返ってくるものとする。
		var response = JSON.parse(this.responseText);
		var img = Ti.UI.createImageView({
			image : Ti.Utils.base64decode(response["img_string"]),
			width : Ti.UI.FILL
		});

		// 以下、imgを画面に表示する処理を書く。






	},
	onerror : function(e) {
			// 失敗した時の処理
		},
		timeout : 3000 // 3秒経過したら、タイムアウト
	});
xhr.open("GET", url);
xhr.send();

ここで注意したいのは、最初、createViewのbackgroundImageで
表示しようと思ってたのだが、何故かandroidでは表示できなかった。

Ti.UI.createView({
	backgroundImage : Ti.Utils.base64decode(response["img_string"]),
	width : Ti.UI.FILL
});

仕方ないので、createImageViewでやったら、AndroidiPhoneの両方で
うまくいったので参考までに。

[追記]
・ImageVIewのimage
http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.ImageView-property-image

・ViewのbackgroundImage
http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.View-property-backgroundImage

ちゃんと、使用できる型決まってるわ。
リファレンスはしっかり見ないと(反省)