2012-04-16 7 views
0

この問題は解決できませんが、表示されるように非常に小さな構文問題でなければなりません。私がやろうとしていることが不可能な場合を除いて、構文の断片はほとんどありません(しかし、私はそれが不可能でなければならない理由はありません...)。jpeg画像を含むjavascriptバイナリ文字列を表示するにはHTML構文が不明です

私は配列に多数の画像を保存したいので、私は、サーバー側でのBase64に画像をエンコードする機能を書かれている:

だから、Base64でと私は私が整理することができ、通常の文字列などの画像をダウンロードすることができます配列を作成してから、正しいイメージと正しい瞬間を選択したときにオブジェクトに入れて、サーバーを再度参照せずに、ユーザーが待つ必要はありません。

  • まず相: - >文字列 {//として 'IMAGEURL' を送信するためにサーバーを頼む

    関数download64(IMAGEURL)//

    それから私はこのような何かをbase64文字列 var tx = DoTheJob(); // ... AJAXを介して接続すると、私は「TX」で画像を保持しています。この段階で リターンが をTX「TX」VARの文字列}

ようにbase64に変換された画像をダウンロードクライアント側のBase64文字列。 はやや後、私は「幹部」と呼ばれるdivの中に私の画像を表示したいので、私は次の操作を行います。

  • 第二相: は、私はちょうどに私の画像を設定する「display64」機能を呼び出す必要があります画面上の「幹部」のオブジェクト:

    display64( "cadre"、tx);

    この機能を使用して

:今すぐ画像が表示され

function display64(destinationDiv,imgText64) //->void 
{ // display 'imgText64' into destinationDiv 
    var oImg = "<img alt='' src='data:image/jpg;base64," + imgText64 + "'>"; 
    var x = document.getElementById(destinationDiv); 
    x.innerHTML = oImg;  
} 

。残念ながら、これはInternet Explorer 8が32Kbを超えるBase64イメージを読み取ることができないため、Firefoxでのみ有効です。そして私の主催では、IE 8だけを使用しています!

私はbase64エンコーダを落として、画像をバイナリ文字列として取得することに決めました。これは最初はヌル文字に問題がありましたが、管理できました。

ここでは、元のJPGファイル(サーバー側でエンコードしてからクライアント側に復元した0を含む)の正確なコピーを含むバイナリ文字列を使用します。だから、私は今必要なことは、単純な関数「displayBin」ですが、私はウェブ上の構文を見つけることができません。

function displayBin(destinationDiv,imgTextBin) //->void 
{ // display 'imgTextBin' into destinationDiv 
    var oImg = "<img alt='' src='??????? + imgTextBin + "'>"; // What's the syntax here, please? 
    var x = document.getElementById(destinationDiv); 
    x.innerHTML = oImg; 
} 

誰でも助けることができますか?どうもありがとう。

+0

ブラウザがデータURLをサポートしていない場合は、必要な操作を実行できません。画像を生成するにはサーバー側のスクリプト(例えばPHPなど)を使用し、img要素のsrcはサーバー側のスクリプトを指す必要があります。しかし、要素にバイナリコードを追加するだけで、うまくいくことを期待できます。 – mpm

答えて

0

あなたの質問を理解すれば、画像を保存してサーバーに接続する必要はありません。これを行う1つの方法は、画像をプリロードすることです。var img=new Image; img.src='path';すべての画像を配列にロードして、必要に応じてそれらをページに追加することができます。それはあなたの達成しようとしているように見えるので、画像のプリロードには多くのことがあります。

+0

答えがありがとう、私はすでにプリロードメソッドについて聞いていますが、シンプルなバイナリ文字列を宣言する構文がないように思えます。なぜなら、HTML/Javascriptは、ブラウザのエンジンの中で確かに見つかるはずの、その関数へのアクセスをプログラマに許可しないのはなぜですか?信じがたいですね! – user1238012

+0

@ user1238012:内部メソッドがかなりのハンドラにラップされ、直接アクセスされないAPIが多数あります。ブラウザのきれいなハンドラは 'Image()'と ''です。 –

+0

ありがとう、私はそれを知っていますが、Webのいくつかの部分で見つかった方法を試したとき、 – user1238012

関連する問題