Titanium MobileでBase64でエンコードされた画像を表示。(Android/iPhone)
Titanium SDK:3.2.0
Alloy:1.3.0
サーバーからBase64でエンコードされた画像データを表示したかったのだが、
AndroidとiPhoneでハマったので、メモ。
// 画像取得先の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でやったら、AndroidとiPhoneの両方で
うまくいったので参考までに。
[追記]
・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
ちゃんと、使用できる型決まってるわ。
リファレンスはしっかり見ないと(反省)