1

MySQL データベースから画像をプリロードし、HTML ドキュメントの画像タグに一度に 1 つずつ表示する JavaScript スライドショーがあります。簡単に言えば、Web 上にある多くのスライドショー チュートリアルのように画像をプリロードすることでこれを実現しますが、静的画像 (つまり、images/image1.jpg など) を使用する代わりに、PHP を介して提供される動的画像 (つまり、getData.php?n) を使用します。 =1) getData.php スクリプトはサーバー上で実行され、プリロードされたすべての画像に対してデータベースへの新しい接続を開きます。

データベースに非常に多くの接続を作成し、各接続で画像データベースに対して LIMIT n,1 で単一のクエリのみを作成することを回避する方法はありますか?

getData.php を image.src として使用する場合、getData.php は一度に 1 つの画像を返す必要があるようです。それらを 10 個のブロックでフェッチし、クライアント側で Image() オブジェクトに 1 つずつ割り当てたいと思います。Pythonでクライアントアプリを作成して(もちろんブラウザの外側で)画像を表示すると、10個程度のブロックがはるかに高速に転送された(そしてmySQLサーバーの負荷が軽減された)ため、これはより高速になると思います。JavaScript と PHP でこれを実現できますか? 間に XML を使用しますか? AJAX を使用してバイナリ イメージ データを JavaScript に取り込むことができれば、それで何かできるでしょうか? imagecreatefromstring()私が欠けている JavaScriptの関数はありますか?

自分で正確なコードを理解することはできますが、Web プログラミングは初めてで、この問題に取り組む方法についてのヒントが必要です! 主要なフレームワークの一部が欠けていると思います。この問題を解決するには、ActionScript または JavaScript 以外の何かが必要ですか? 事前にヒントをありがとう!

編集:私はこの最初の提案が好きで、それを成し遂げることができると思います. また、alex shishkin の提案の一部に従って LIMIT n,1 クエリを回避することもできます (ただし、SQL BLOB フィールドを保持したい) しかし、XML からのバイナリ データを JavaScript の Image() オブジェクトに貼り付けるにはどうすればよいですか

4

3 に答える 3

2

私はこう言います:

  • 次の 10 個の画像を含む XML ファイルを getData.php で生成します。
  • AJAX-Request から getData.php への XML 応答を取得する JavaScript を用意します。
  • XML 応答内の画像を 1 つずつトラバースし、9 番目の画像が表示されたら、次の画像セットについて getData.php を照会します。

フレームワークに関して: 私のアドバイスは、AJAX 要求と画像の表示とプリロードの両方に JQuery を使用することです。


base64 などのバイナリからテキストへのエンコーディングを使用して、バイナリ データを XML 経由で渡すことができます。ほとんどのブラウザーでは、base64 デコードを単独で使用して、次のように画像オブジェクトに渡すことができます。

<img src="data:image/jpeg;base64,your binary data comes here">

これは、Internet Explorer 以外のすべてで機能します。Dean Edwards による巧妙なトリックを使用して、base64 データを IE の PHP モジュールに戻すことができます:)

シンプルな画像に JQuery と PHP を使用すると (スライドショーはありません... これは単なるテスト コードでした)、コードは次のようになります。

PHP:

<?php
   echo base64_encode(file_get_contents("image.jpg"));
?>

JS/JQuery:

$(document).ready( function() {
   $.get( "image.php", function( data ) {
      $(document).append("<img src=\"data:image/jpeg;base64,"+ data +"\">");
   });
});
于 2009-03-06T09:55:03.600 に答える
0

バイナリ イメージと "limit n,1" を使用する - 非常に悪い解決策です。

画像が画像へのリンクとしてデータベースに保存されなかったのはなぜですか? また、イメージはファイル システムに保存する必要があります。「Limit n, 1」のようなクエリは、特に大きなテーブルでは非常に遅くなります。小さなオフセットを持つ多くのクエリの代わりに大きなオフセットを持つ小さなクエリを使用し、javascript に送信するためにデータを php から json 形式にパックする必要があります。(たとえば、100 を制限します) 1 つの画像に対する ajax 要求の送信は、非常に驚​​異的です。

plugins.jquery.com で素敵なスライド ショーを見つけることができます。

于 2009-03-06T14:45:24.167 に答える
0
  1. Web ページを作成します。
  2. ページをサーバーに接続し、画像の ID を含む XML または JSON を取得します。
  3. 手順 2 の ID を使用して、サーバーから画像を要求します。
于 2009-03-06T22:34:46.487 に答える