サーバーから画像 (base64 文字列形式でエンコード) を取得しています。この base64 でエンコードされた文字列は、画像に変換する必要があります。私は2つのステップでやっています:
base64 でエンコードされた文字列をバッファーに変換する -ビットを使用 -> 文字列をバッファーに変換(string,"base64")
バッファーを (同じサイズの)画像に書き込む - 画像を使用 -> バッファー(バッファー) を書き込み、画像を表示します。
サーバーからの base64 文字列 (文字列全体):
iVBORw0KGgoAAAANSUhEUgAAAJEAAAAeCAYAAAAsPvwuAAAAmUlEQVR42u3SQQoAIQgAwL7h/x+6sQsLHcqCPI7QITGNmvYsIiK+leX+/ZjPcifnsnvs5pzW3PaunLGrm/W6eZPqv3yjQQQRRBBBBBFEEEEEEUQQQQQRRBBBBBFEEEEEEUQQQQQRRBBBBBFEEEEEEUQQQQQRRBBBBBFEEEEEEUQQQQQRRBBBBBFEEEEEEUQQQQQRRBBBVIuoAwQlLkAhgPjNAAAAAElFTkSuQmCC
問題は、壁に表示したときに目的の画像が得られないことです。非常に小さな画像を表示するだけです。
それで、TouchDevelopがビットで期待する文字列を見つけようとしました-> string to buffer(string,"base64") メソッド。
- サーバーから取得したものと同じ文字列を提供するオンラインコンバーター ( http://www.motobit.com/util/base64-decoder-encoder.asp ) から元の画像を取得しました。このイメージは正しかった。
- 次に、上で説明した逆のプロセスを実行しました。つまり、画像を base64 文字列に変換します。これは、Picture to buffer (Picture) を使用し、次にbuffer to string (“base64”) を使用して行い、同じ画像に対して TouchDevelop によって生成された base64 文字列を表示しました。
TouchDevelop から取得した base64 文字列 (実際の文字列のごく一部 - 実際の文字列サイズ - 23,300 文字) :
///////////////////////////////GRkZ/xkZGf/////////////// /8ZGRn/GRkZ////////////GRkZ/xkZGf8ZGRn/GRkZ//////8ZGRn/GRkZ/xkZGf8ZGRn//////xkZGf8ZGRn/////////// 8ZGRn/GRkZ/xkZGf8ZGRn//////xkZGf8ZGRn////////////////////xkZGf8ZGRn//////xkZGf8ZGRn//////xkZGf8ZGRn/ GRkZ/xkZGf///////////xkZGf8ZGRn//////xkZGf8ZGRn/GRkZ/xkZGf/////////////////////GRkZ/ xkZGf//////GRkZ/xkZGf//////GRkZ/xkZGf8ZGRn/GRkZ///////////GRkZ/xkZGf8ZGRn/GRkZ/////8ZGRn/GRkZ/xkZGf8ZGRn/ ////////////////////xkZGf8ZGRn//////xkZGf8ZGRn//////xkZGf8ZGRn///////////8ZGRn/GRkZ //////8ZGRn/GRkZ/////////////////////8ZGRn/GRkZ/xkZGf8ZGRn//////xkZGf8ZGRn//////xkZGf8ZGRn /GRkZ/xkZGf///////////xkZGf8ZGRn///////////////……</p>
お気づきかもしれませんが、サーバーからの base64 文字列と、TouchDevelop が正しい画像を表示することを期待する base64 文字列には大きな違いがあります。これにより、誤った画像が表示されます。私はこの問題で数日間立ち往生しています。バグはありますか?そうでない場合、誰でもこの問題を解決できますか?