get_serving_url当前不支持独立调整图像宽度/高度,而只允许使用"size"参数进行方形调整。
http://code.google.com/p/googleappengine/issues/detail?id=4200
有人能提出一个有效的解决方案吗?使用images.resize()似乎是一种方法,但这是否不需要将转换后的图像重新存储在blobstore中以获得get_serving_url的blob_key?
希望有一个足够有效的解决方案,不会破坏使用blobstore的速度优势!
谢谢大家。
https://code.google.com/p/googleappengine/issues/detail?id=4200#c18
耶!
来自帖子:"它实际上已经实现了,但我没有在任何地方看到它的文档:
- 最长尺寸的长度:=s180
- 宽度:=w200
- 高度:=h150
- 宽度和高度:=w200-h150
- 裁剪大小:=s200-c
- 使用宽度/高度裁剪:=w200-h150-c
- 旋转:=r90
- 联合收割机旋转:=w200-h150-r90-c
以下是一个示例:http://lh4.ggpht.com/TgjDT-cPRr6bjrpSVQeILk93o4Ouzjo1ygMB6KpmnCHhyH5vJKKRrqxCD2bC3T09CRIP6h5QFsV_l0hnhio5bN7z=h200-w300-r180-c"
您需要做的是计算原始图像的比例,以将其调整为所需的宽度和高度,然后您应该将计算出的大小值传递给服务url并获得所需的大小。
resolution = '1200x900'
blob_width, blob_height = resolution.split('x')
blob_width = float(blob_width)
blob_height = float(blob_height)
width = float(width)
height = float(height)
blob_prop = blob_width / blob_height
req_box_prop = width / height
if req_box_prop == blob_prop:
scale_factor = blob_width / width
serving_img_height = blob_width / scale_factor
serving_img_width = blob_height / scale_factor
if req_box_prop < blob_prop:
serving_img_width = width
serving_img_height = width / blob_prop
else:
serving_img_width = height * blob_prop
serving_img_height = height
serving_img_width = int(round(serving_img_width, 0))
serving_img_height = int(round(serving_img_height, 0))
# use serving urls
side = max(serving_img_width, serving_img_height)
和边是你用来你的服务网址
'http://yourservingurl=s%s'%side