尺寸参数不适用于Google CDN上的图片

时间:2017-01-18 05:56:04

标签: python google-app-engine google-cloud-platform webapp2 google-cdn

我正在使用webApp2和Google App Engine构建一个简单的应用程序,imagesblobstore api使用Google CDN提供上传的图像。我使用以下代码生成图像的服务URL -

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

它给我的网址如下(例如) -

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

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

两个网址都仅按最后一个尺寸参数(=s150-c)推迟,该参数应将thumbnail_url中的图片裁剪为150像素,作为其最大尺寸。我可以参考官方文件here来确认。但是,该参数根本不会影响图像的大小。即使添加参数后,我仍然可以获得全尺寸图像。我已尝试删除-c并试用各种尺寸 我也尝试过来自this list的一些论点,遗憾的是它根本不会影响图像。

知道这种行为的原因是什么?

1 个答案:

答案 0 :(得分:3)

在跟踪日志之后,我发现它是由于PIL未在本地安装而发生的。如果需要在本地服务器上完成转换,则需要安装PIL。 我选择使用pip install Pillow -t lib/安装Pillow,然后将以下内容添加到app.yaml

libraries:
- name: PIL
  version: "1.1.7"

然后在appengine_config.py文件夹所在的项目的根目录中添加了lib文件,并将以下代码添加到其中。

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

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

它开始神奇地工作。