2012-04-03 3 views
3

get_serving_urlは現在、画像の幅/高さのサイズ変更を独立してサポートしていません。代わりに、 'サイズ'パラメータを使用して四角形のサイズ変更を許可します。width/height 'size'パラメータをサポートしていないget_serving_urlの回避策?

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

誰もがこのための効率的な回避策を提案することはできますか?それはimages.resize()を使用するようなものですが、get_serving_urlのblob_keyを取得するには、変換されたイメージをblobstoreに再格納する必要はありませんか?

ブロブストアを使用することによるスピードの利点を元に戻すことができないほど効率的な解決策がありますように!

ありがとうございます。

+0

おそらくあなたは、この問題を主演必要があります - HTTPを://code.google.com/p/googleappengine/issues/detail?id = 4200 –

答えて

4

あなたがしなければならないことは、オリジナルの画像を希望の幅と高さにサイズ変更する割合を計算した後、サイズを計算して配信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) 

と側面は、あなたがURL

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

+0

これは完全に機能します。ありがとうございました! – Cerzi

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