Intel XDK で HTML5 アプリを作成しているため、計算は Javascript で行われます。
ケース: サーバーから (google) protobuf メッセージを取得する。それを解析してオブジェクトにします。jpg という画像があります。それをHTMLに入れます。ねえ、そのためにbase64を使用できます... Androidでこれを行いました。BitmapFactory を使用できます。
Bitmap bitmap = android.graphics.BitmapFactory.decodeStream(document.getDocBlob().newInput());
いくつかのgoogle-fuが次のようなものを見つけた後:
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(currentComment.Document.doc_blob.buffer)));
var ByteBuffer = ProtoBuf.ByteBuffer;
var base64String = ByteBuffer.btoa(currentComment.Document.doc_blob.buffer, currentComment.Document.doc_blob.littleEndian, currentComment.Document.doc_blob.noAssert);
ここに問題があります:画像が表示されません: リンク切れの画像が表示されます。ただし、上記の最初の関数を使用してもエラーは発生しません。私が間違っていると思うのは、オフセットです。データ構造は次のようになります。
buffer: ArrayBuffer
byteLength: 148199
__proto__: ArrayBuffer
limit: 69895
littleEndian: true
markedOffset: -1
noAssert: false
offset: 44278
view: DataView
HTML への設定は次のように行われ、動作します。他の base64 文字列でテストしました。
commentImage = document.getElementById("img-frame");
var source = "data:image/" + image_type + ";base64," + base64String;
commentImage.setAttribute("height", currentComment.Document.doc_height);
commentImage.setAttribute("width", currentComment.Document.doc_width);
commentImage.setAttribute("src", source);