get_serving_url的解决方法不支持width / height'size'参数?

时间:2012-04-03 10:14:22

标签: python google-app-engine blobstore

get_serving_url目前不支持独立调整图像宽度/高度,而只允许使用'size'参数调整方形大小。

http://code.google.com/p/googleappengine/issues/detail?id=4200

有人可以建议一个有效的解决方法吗?看起来像使用images.resize()是可行的方法,但是不需要在blobstore中重新存储转换后的图像来获取get_serving_url的blob_key吗?

希望有一个足够高效的解决方案,可以避免使用blobstore的速度优势!

谢谢大家。

2 个答案:

答案 0 :(得分:4)

您需要做的是计算原始图片的比例以将其调整为所需的宽度和高度,之后您应该将计算出的尺寸值传递给服务网址并获得所需内容。

    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)

和side是您用于服务网址的内容

'http://yourservingurl=s%s'%side

答案 1 :(得分:4)

https://code.google.com/p/googleappengine/issues/detail?id=4200#c18

耶!

从帖子: &#34;它已实际实施,但我没有在任何地方看到它:

  • 最长尺寸的长度:= s180
  • width:= w200
  • 身高:= h150
  • 宽度和高度:= w200-h150
  • 裁剪尺寸:= s200-c
  • 裁剪宽度/高度:= w200-h150-c
  • rotate:= r90
  • 结合旋转:= w200-h150-r90-c

以下是一个示例:http://lh4.ggpht.com/TgjDT-cPRr6bjrpSVQeILk93o4Ouzjo1ygMB6KpmnCHhyH5vJKKRrqxCD2bC3T09CRIP6h5QFsV_l0hnhio5bN7z=h200-w300-r180-c&#34;