2014-02-09 36 views
1

在我切換到GCS之前,我曾經可以使用動態調整大小功能(= s200)。 GCS上存儲圖像可能嗎?我似乎無法得到它的工作。使用get_serving_url調整在GAE中直接從GCS提供的圖像的大小?

我將圖片上傳到GCS,保存blobkey,然後使用get_serving_url來獲取圖片url。使用該網址,圖片顯示在我的網站上。但是,如果我在飛行功能(= s200)上追加調整大小,我會收到404錯誤。

下面是我使用的瓶代碼:

def gcs_upload_image (image, filename): 

    write_retry_params = gcs.RetryParams(backoff_factor=1.1) 

    with gcs.open(filename, 
       mode='w', 
       content_type=image.mimetype, 
       options={'x-goog-meta-foo': 'foo', 
          'x-goog-meta-bar': 'bar'}, 
       retry_params=write_retry_params) as imageFile: 
    image.save(imageFile) 

    blobstore_filename = '/gs' + filename 
    return blobstore.create_gs_key(blobstore_filename) 

@mod.route("/account", methods=["GET", "POST"]) 
@login_required 
def account(): 
    if request.method == "GET": 
     return render_template('users/account.html') 
    else: 
     image = request.files.get('file', None) 
     bucket = current_app.config['BUCKET'] 
     filename = "/".join(['', bucket, g.user.key.id()]) 
     if image: 
      if g.user.avatar: 
       blobstore.delete(g.user.avatar) 

      gcs_key = gcs_upload_image(image, filename) 
      blobkey = blobstore.BlobKey(gcs_key) 
      g.user.avatar = blobkey 
      g.user.put() 
     return redirect(url_for("users.account")) 

@mod.route('/u/<userid>') 
def profile(userid): 
    user = User.get_by_id(userid) 
    url = get_serving_url(user.avatar) 
    return render_template('users/profile.html', user=user, url=url) 

回答

1

你可以只使用規模和作物參數來調整在飛行時的圖像調用get_serving_url()。

+0

這樣做的竅門!謝謝。我不知道我是如何錯過的! – TylerW

相關問題