PythonスクリプトからGoogle App EngineのPythonイメージングライブラリを使用して、ローカルファイルシステムからイメージファイルをロードすることはできますか? それとも、データストアから画像をロードする必要がありますか? テキスト ファイルを正常に読み込んで、その内容を表示できます。
Python 2.7 で Google アプリ エンジンを使用し、PIL イメージング ライブラリを使用しています。Mac OS X 10.8.2 で PyCharm と Google App Engine Launcher を使用しています。ソースからビルドした PIL のバージョン 1.1.7 を使用しています。
Python スクリプトの応答出力で画像を返す前に、画像 (または複数の画像) に対して何らかの操作を実行したいと考えています。
この関数を使用するImage.image( filename=<filename> )
と、ファイル名は「/gs」で始まる必要があるというエラーが表示されます。__init()__
Image オブジェクトのメソッドにステップblobstore.create_gs_key()
インすると、Image コンストラクターにファイル名を指定すると、blobkey の作成に使用されることがわかります。
操作したい画像のセットが固定されているため、それらを手動でデータストアにアップロードして取得する必要がないようにしたいと考えていました。
私の簡単なアプリケーション ハンドラーは現在、次のようになっています。
class ChallengeImageHandler( webapp2.RequestHandler ):
def get(self):
olifant = images.Image( filename='gs/challenge/C017.png' )
logging.debug( "olifant.width=%d" % olifant.width );
logging.debug( "olifant.height=%d" % olifant.height );
self.response.headers[ 'Content-Type' ] = 'image/png'
self.response.out.write( olifant )
return
私の app.yaml は次のようになります。
application: hello_world
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /stylesheets
static_dir: stylesheets
- url: /images
static_dir: images
- url: /.*
script: main.application
- url: /software_development.html
script: main.application
libraries:
- name: jinja2
version: latest
- name: PIL
version: latest
画像を静的に提供することで同じ結果が得られることは理解していますが、画像を正常にロードできたら、提供する前に操作したいと考えています。アプリケーションからロードしたい画像を意図的に配置しましたが、Google App Engine Web サーバーによって静的コンテンツとして提供されていません/images
。これらは、 というサブディレクトリにありgs/challenge
ます。
支援、提案、または解決策は大歓迎です。おそらく、私はこれについて完全に間違った方法で進んでいますか?