GAE: как получить высоту изображения блоба

Данная модель является моделью GAE:

avatar = db.BlobProperty() 

Вызывая свойства экземпляра изображения высоту или ширину ( см. Документацию ) с помощью:

 height = profile.avatar.height 

возникает следующая ошибка:

AttributeError: объект 'Blob' не имеет атрибута 'height'

PIL установлен.

2 Solutions collect form web for “GAE: как получить высоту изображения блоба”

Если изображение хранится в BlobProperty, данные сохраняются в хранилище данных, а если ваш profile является вашим объектом, то высота может быть доступна как:

 from google.appengine.api import images height = images.Image(image_data=profile.avatar).height 

Если изображение находится в блочном хранилище (blobstore.BlobReferenceProperty в хранилище данных), тогда у вас есть 2 способа сделать это, лучший способ сложный и требует получения читателя для блоба и подачи его в читатель exif для получения размера , Более простой способ:

если avatar = db.BlobReferenceProperty() и profile – ваша сущность, тогда:

 from google.appengine.api import images img = images.Image(blob_key=str(profile.avatar.key())) # we must execute a transform to access the width/height img.im_feeling_lucky() # do a transform, otherwise GAE complains. # set quality to 1 so the result will fit in 1MB if the image is huge img.execute_transforms(output_encoding=images.JPEG,quality=1) # now you can access img.height and img.width 

БЛОБ – это не изображение, это совокупность данных.

Чтобы сделать Image из вашего блоба, вы должны вызвать Image(blob_key=your_blob_key) если ваш blob хранится в blobstore или Image(image_data=your_image_data) если он хранится в виде блоба в хранилище данных.

  • Как обмениваться сеансами между модулями в приложении Python для приложения Google App Engine?
  • Передача переменной макросу в Jinja2
  • Можно ли установить «Cache-Control: public» при отправке «304 Not Modified» для изображений, хранящихся в хранилище данных
  • Как добавить поставщиков OAuth 2.0?
  • Python 2.7 Комбинируйте abc.abstractmethod и classmethod
  • API-интерфейс API-интерфейса App Engine медленнее, чем собственный питон
  • Python на Appengine с помощью BeautifulSoup ImportError: нет модуля с именем bs4
  • Как использовать метод HTTP DELETE в Google App Engine?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.