2

GETデータを使用して動的に画像を作成するCGIスクリプトを作成しました。この画像を自分のWebページに含めるために、次のコードを使用しています。

<img src="image.py?text=xxxxxxxxxxxxxx">

問題は、将来、「テキスト」フィールドが非常に長くなり、URLが大きくなりすぎると予想していることです。グーグルの周りから、URLの長さに固定された制限はないようです(つまり、ブラウザ、サーバー、プロキシなどに依存します)これを行うためのより良い方法はありますか?

重要な場合、私はDjangoとPythonを使用しており、クライアント側のスクリプト(JavaScriptなど)を使用できません。

乾杯、ベン

4

8 に答える 8

5

テキストをどこかに保存してから(データベースなど)、主キーを渡します。

于 2008-10-28T13:52:34.450 に答える
1

これにより、POST の結果として画像が取得されます。気に入らない場合があります。

  1. 画像を配置したい場所に iFrame を配置してサイズを変更し、スクロールバーを削除します
  2. 非表示の入力が投稿パラメーターに設定され、アクションが画像を生成する URL に設定されたフォームに src を設定します。
  3. iFrame の HTML の body.onload で JavaScript を使用してフォームを自動的に送信します

    次に、次のいずれかを行います。

  4. コンテンツ タイプ セットを画像に返し、画像バイトをストリーミングします

    また:

  5. 投稿パラメータをどこかに保存し、小さなIDを生成します

  6. URL の ID を使用して img タグで HTML を返します -- サーバー上で投稿パラメータを検索します

    また:

  7. 画像が埋め込まれた画像タグ付きのページを生成する

    http://danielmclaren.net/2008/03/embedding-base64-image-data-into-a-webpage

于 2008-10-28T14:22:51.690 に答える
1

これまで述べてきたことをまとめると、2 つのページを作成するのはどうでしょうか。最初のページは、フォームが送信されたときに (create_img.py に言ってみましょう)、text=xxxxxxx... パラメータを指定して POST リクエストを送信します。次に、create_img.py は text パラメータを受け取り、それを使用して画像を作成し、それ (またはファイルシステム参照) を db に挿入します。次に、2 ページ目をレンダリングするときに、 のような img タグを生成します<img src="render_img.py?row_id=0122">。この時点で、render_img.py は指定された画像をデータベースに照会するだけです。画像を作成する前に、それが既にデータベースにあるかどうかを確認して、同じテキスト パラメータで以前の画像を再利用/リサイクルすることができます。

于 2008-10-28T14:24:46.490 に答える
0

imgはGETを使用します。別のメカニズムを考え出す必要があります。image.pyで同じ機能を呼び出し、そのファイルをimgタグで参照する一時ファイルとして保存するのはどうですか?または、このimgタグのレンダリング中にdb行にテキストの値を保存し、image.pyスクリプトに渡すものとしてrow_idを使用するのはどうですか?

于 2008-10-28T13:52:14.857 に答える
0

下のリンクを見ると、しばらくは大丈夫そうです ;)

http://www.boutell.com/newfaq/misc/urllength.html

于 2008-10-28T14:48:08.097 に答える
0

OK、パーティーには少し遅れましたが、MHTML (IE7 以下用) とデータ URI スキーム (他のすべての最新ブラウザー用) を組み合わせて使用​​できます。クライアントとサーバーの両方で少し作業が必要ですが、最終的には

newimg.src = 'blah';

これを行う方法についての記事はhttp://gingerbbm.com/?p=127にあります。

于 2009-06-27T01:05:49.193 に答える
0

django を使用している場合は、代わりにテンプレート タグを使用してこれを行うことができますか?

何かのようなもの:

<img src="{% create_image "This is the text that will be displayed" %}">

create_image 関数は、ダミー/ランダム/生成されたファイル名で画像を作成し、パスを返します。

これにより、スクリプトに対して GET または POST する必要がなくなり、画像には扱いやすいファイル名が付けられます。

このアプローチにはいくつかの潜在的な問題があることがわかります。アイデアを投げかけているだけです;)

于 2008-10-28T16:05:39.690 に答える
0

get パラメータのテキストを圧縮することで、問題を軽減できる場合があります。

于 2008-10-28T14:28:54.843 に答える