2012-04-03 71 views
3

get_serving_url目前不支持獨立調整圖像寬度/高度大小,而只允許使用「大小」參數進行方形大小調整。get_serving_url不支持width/height'size'參數的解決方法?

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

任何人都可以提出這種高效的解決方法嗎?這看起來像使用images.resize()是要走的路,但是不需要將已轉換的圖像重新存儲在blobstore中以獲取get_serving_url的blob_key?

希望有一種解決方案足夠高效,不會失去使用blobstore的速度優勢!

謝謝大家。

+0

也許你應該出演這個問題以及 - HTTP ://code.google.com/p/googleappengine/issues/detail?id = 4200 – 2012-04-06 12:48:39

回答

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) 

和側面是你用什麼爲您服務網址

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

+0

這很好。謝謝! – Cerzi 2012-04-03 13:59:49

4

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

耶!

從帖子: 「它實際上是實現,但我沒有看到它的任何地方記載:

  • 最長尺寸的長度:= S180
  • 寬度:= W200
  • 高度:= H150
  • 寬度和高度:= W200-H150
  • 與尺寸裁剪:= S200-C
  • 與寬度/高度裁剪:= W200-H15 0-C
  • 旋轉:= R90
  • 聯合旋轉:= W200-H150-R90-C

下面是一個例子:http://lh4.ggpht.com/TgjDT-cPRr6bjrpSVQeILk93o4Ouzjo1ygMB6KpmnCHhyH5vJKKRrqxCD2bC3T09CRIP6h5QFsV_l0hnhio5bN7z=h200-w300-r180-c

相關問題