0

Pythonファイルを画像のように動作させる必要があります。つまり、Pythonファイルへのパスは、Webページのタグ内で使用されます。Pythonファイルは、PILを使用して動的にイメージを作成します(ファイルへの中間保存はありません)。

私はPython2.7、Web.Py、およびPILを使用しており、32ビットWindows XPで開発し、WAMPSS Webサーバーを使用し、最新のChromeを使用しています。

もうすぐです。おもう。

これが私のPython画像ファイルの縮小例です:

#!/home/bin/python
# #############################################################################
import web, sys
from PIL import Image, ImageDraw, ImageFont
# #############################################################################
class debug:
    def GET(self):
        # drawing with PIL (Python Image Library)
        # create a new 256x256 pixel image surface (default is black bg)
        img = Image.new("RGB", (256, 256))
        # set up the new image surface for drawing
        draw = ImageDraw.Draw (img)
        # REMOVED - Image manipulation
        # Output the image to the browser
        sys.stdout.write('Status: 200 OK\r\n')
        sys.stdout.write('Content-type: image/png\r\n')
        sys.stdout.write('\r\n')
        img.save(sys.stdout, "PNG")
# #############################################################################
urls = ( '/debug.py', 'debug' )
app = web.application(urls, globals())
if __name__ == "__main__":
    app.run()
# #############################################################################

さて、これはうまくいきます...ちょっと。

このファイルをブラウザ(ローカルAMPSSサーバー)で直接表示すると、画像が表示されます。ただし、同様の1k PNG画像と比較すると、表示/サーバーに長い時間(5秒以上)かかります。そしてChromeコンソールはそれが失敗したと言います(私は画像を見ることができますが)

ブラウザは私が送信していない何かを期待していると思いますか?

この画像をJQueryとOnLoadイベントで使用すると、実際の問題が発生しました。その後、物事は...奇妙な...より良い言葉を求めて...なりました。画像が読み込まれて表示されてから数秒後に画像をクリアするイベント(私のものではない)が発生しているようです。

Chromeコンソールは、画像を取得するときにGETが失敗することを示しています(ただし、少なくともJSの何かが再び消えるまで、画像は表示されます!)

興味深いことに、この問題は最新のFirefoxでは発生しないようです。最新のOperaでは読み込み時間が誇張されていますが、JSは画像をグリッチしません。IE8でも同じ

さらに混乱させるために、私は2台のWindows XP(32ビット)開発マシンを持っています。JSグリッチはそれらの1つでは発生しません。そして、Chromeコンソールは障害をリストしません!

ここにオンラインで画像ファイルのデモを掲載しました:LINKY そしてこのファイルを使用する開発中のページ:LINKY 白い画像ホルダーをクリックするとJquery/JSがアクティブになります。

これがあなたのセットアップでうまくいくかどうかはわかりません。完全を期すためにここにリンクしています。

私が欠けているものについて何かアイデアはありますか?

4

1 に答える 1

2

web.py では、ブラウザに送信する必要があるコンテンツを返す必要があります。web.headerまた、HTTP ヘッダーの設定にも使用します。

画像を保存しStringIOてその内容を返します:

import StringIO

# in GET(self):
web.header('Content-type', 'image/png')
buf = StringIO.StringIO()
img.save(buf, "PNG")
contents = buf.getvalue()
return contents
于 2013-02-19T16:55:04.587 に答える