2014-02-09 2 views
1

Прежде чем переключиться на GCS, я использовал функцию изменения размера для изображений на лету (= s200). Возможно ли это с изображениями, хранящимися на GCS? Кажется, я не могу заставить его работать.Изменить размеры изображений, которые подаются непосредственно от GCS в GAE, используя get_serving_url?

Загрузите изображение в GCS, сохраните blobkey, а затем используйте get_serving_url, чтобы получить 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

Смежные вопросы