2017-01-18 3 views
0

私はwebApp2とGoogle App Engineをシンプルなアプリケーションに使用し、imagesblobstore apiを使用してGoogle CDNを使用してアップロードした画像を提供しています。 I画像のためのサービングURLを生成するには、次のコードを使用しています -画像のGoogle CDNでサイズパラメータが機能しない

from google.appengine.api import images 
from google.appengine.ext import blobstore 

def _get_urls_for(self, file_name): 
    user = users.get_current_user() 
    if user is None: 
     return 

    bucket_name = app_identity.get_default_gcs_bucket_name() 
    path = os.path.join('/', bucket_name, user.user_id(), file_name) 
    real_path = '/gs' + path 
    key = blobstore.create_gs_key(real_path) 
    url = images.get_serving_url(key, size=0) 
    thumbnail_url = images.get_serving_url(key, size=150, crop=True) 
    return url, thumbnail_url 

それは私に(例として)次のようにURLを与える -

http://localhost:8080/_ah/img/encoded_gs_file:YXBwX2RlZmF1bHRfYnVja2V0LzE4NTgwNDc2NDIyMDEzOTEyNDExOC9pbWc4NzYuanBn=s32 

http://localhost:8080/_ah/img/encoded_gs_file:YXBwX2RlZmF1bHRfYnVja2V0LzE4NTgwNDc2NDIyMDEzOTEyNDExOC9pbWc4NzYuanBn=s150-c 

両方URLは最後のサイズパラメータ(=s150-c)だけ遅延します。このパラメータは、サムネイル_urlの画像を150ピクセルにトリミングする必要があります。私は公式の文書hereを参照することによってそれを確認することができます。しかし、このパラメータはイメージのサイズにはまったく影響しません。私はまだパラメータを追加した後でもフルサイズの画像を取得しています。私はすでに-cを削除しようとしていて、さまざまなサイズで試しました。
私はthis listからいくつかの引数も試しましたが、残念なことにイメージにはまったく影響しません。

この現象の原因は何でしょうか?

答えて

3

ログをトレースした後、PILがローカルにインストールされていないために発生したことがわかりました。変換をローカルサーバー上で行う必要がある場合は、PILをインストールする必要があります。私はpip install Pillow -t lib/を使用して枕をインストールすることを選択した後、app.yaml

libraries: 
- name: PIL 
    version: "1.1.7" 

に以下を追加 はその後libフォルダが存在する私のプロジェクトのルートにappengine_config.pyファイルを追加し、そこに次のコードを追加しました。

# appengine_config.py 
from google.appengine.ext import vendor 

# Add any libraries install in the "lib" folder. 
vendor.add('lib') 

そして、それは魔法のように動作し始めました。

関連する問題