0

ご覧のとおり、これは非常に小さな構文の問題にすぎないはずですが、この問題を解決することはできません。それが不可能であるべき理由がわかりません...)。

多数の画像を配列に保存したいので、サーバー側で画像を Base64 にエンコードする関数を作成しました。

したがって、Base64 を使用すると、画像を通常の文字列としてダウンロードして配列に整理し、適切な画像と適切な瞬間を選択したときにオブジェクトに配置できます。サーバーを再度参照する必要はありません。ユーザーは待つ必要はありません。

それから私はこのようなことをします:

  • 第1段階:

    function download64(imageUrl) //->string { // サーバーに「imageUrl」を base64 文字列として送信するように依頼します var tx = DoTheJob(); // ... ajax 経由で接続し、base64 に変換された画像を文字列として var 'tx' return tx にダウンロードします }

この段階で、クライアント側の 'tx' Base64 文字列にイメージを保持しています。しばらくして、「cadre」という div に画像を表示したいので、次のようにします。

  • 第 2 段階: 「display64」関数を呼び出して、画像を画面上の「cadre」div オブジェクトに設定するだけです。

    display64("幹部",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 エンコーダーを削除し、画像をバイナリ文字列としてフェッチすることにしました。これは、最初は nul 文字に問題がありましたが、管理できました。

ここで、ソース JPG ファイルの正確なコピーを含むバイナリ文字列 (サーバー側でエンコードし、クライアント側で復元したゼロを含む) を使用してここにいます。したがって、今必要なのは単純な関数「displayBin」ですが、Web 上で構文が見つかりません。

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;  
}

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

4

1 に答える 1

0

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

于 2012-04-16T14:35:04.670 に答える