2017-01-18 3 views
0

Я использую webApp2 и Google App Engine для простого приложения и images и blobstore api для загрузки загруженных изображений с помощью Google CDN. Я использую следующий код для создания сервировки Url для изображений -Размер Параметр не работает на Google CDN для изображений

from google.appengine.api import images 
from google.appengine.ext import blobstore 

def _get_urls_for(self, file_name): 
    user = users.get_current_user() 
    if user is None: 
     return 

    bucket_name = app_identity.get_default_gcs_bucket_name() 
    path = os.path.join('/', bucket_name, user.user_id(), file_name) 
    real_path = '/gs' + path 
    key = blobstore.create_gs_key(real_path) 
    url = images.get_serving_url(key, size=0) 
    thumbnail_url = images.get_serving_url(key, size=150, crop=True) 
    return url, thumbnail_url 

Это дает мне ссылку следующим образом (в качестве примера) -

http://localhost:8080/_ah/img/encoded_gs_file:YXBwX2RlZmF1bHRfYnVja2V0LzE4NTgwNDc2NDIyMDEzOTEyNDExOC9pbWc4NzYuanBn=s32 

и

http://localhost:8080/_ah/img/encoded_gs_file:YXBwX2RlZmF1bHRfYnVja2V0LzE4NTgwNDc2NDIyMDEzOTEyNDExOC9pbWc4NzYuanBn=s150-c 

Оба URL-адреса откладываются только последним параметром размера (=s150-c), который должен обрезать изображение в thumbnail_url до 150 px как самое большое измерение. Я могу подтвердить это, обратившись к официальной документации here. Однако параметр не влияет на размер изображения вообще. Я все еще получаю полноразмерное изображение, даже после добавления параметра. Я уже пытался удалить -c и пытался с различными размерами.
Я также пробовал несколько аргументов от this list, что, к сожалению, никак не влияет на изображение.

Любая идея, что может быть причиной такого поведения?

ответ

3

После отслеживания журнала я узнал, что это произошло из-за того, что PIL не был установлен локально. Если преобразование необходимо выполнить на локальном сервере, необходимо установить PIL. я решил установить подушку с помощью pip install Pillow -t lib/, а затем добавил следующий app.yaml

libraries: 
- name: PIL 
    version: "1.1.7" 

Затем добавил appengine_config.py файл в корне моего проекта, где lib папка проживает и добавил следующий код к нему.

# appengine_config.py 
from google.appengine.ext import vendor 

# Add any libraries install in the "lib" folder. 
vendor.add('lib') 

И он начал работать волшебно.

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