Обходной путь для get_serving_url, не поддерживающего ширину / высоту параметра 'size'? - PullRequest
3 голосов
/ 03 апреля 2012

get_serving_url в настоящее время не поддерживает независимое изменение размера ширины / высоты изображения, вместо этого разрешается только квадратное изменение размера с использованием параметра size.

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

Кто-нибудь может предложить эффективный обходной путь для этого? Казалось бы, использование images.resize () - это путь, но для этого не нужно повторно сохранять преобразованное изображение в хранилище блобов, чтобы получить blob_key для get_serving_url?

Надеемся, что найдется решение, которое будет достаточно эффективным, чтобы не отменить преимущество скорости в использовании интернет-магазина!

Спасибо всем.

Ответы [ 2 ]

4 голосов
/ 25 июня 2015

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

Ууу!

Из поста: "На самом деле оно реализовано, но я нигде не видел его в документации:

  • длина наибольшаяразмерность: = s180
  • ширина: = w200
  • высота: = h150
  • ширина и высота: = w200-h150
  • обрезка с размером: = s200-c
  • обрезка по ширине / высоте: = w200-h150-c
  • поворот: = r90
  • вращение комбайна: = w200-h150-r90-c

Вот пример: http://lh4.ggpht.com/TgjDT-cPRr6bjrpSVQeILk93o4Ouzjo1ygMB6KpmnCHhyH5vJKKRrqxCD2bC3T09CRIP6h5QFsV_l0hnhio5bN7z=h200-w300-r180-c"

4 голосов
/ 03 апреля 2012

Вам нужно вычислить пропорции исходного изображения, чтобы изменить его размер до желаемой ширины и высоты, после чего у вас должно быть рассчитанное значение размера, чтобы перейти к 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)

, а side - это то, что вы используете для своего URL-адреса для сервировки

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...