我正在使用webApp2和Google App Engine构建一个简单的应用程序,images
和blobstore
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的一些论点,遗憾的是它根本不会影响图像。
知道这种行为的原因是什么?
答案 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')
它开始神奇地工作。