2013-05-12 3 views
0

Я хотел бы иметь возможность изменить размер блоб изображения, прежде чем сохранить его в базу данных с помощью Google App EngineКопир.изобр перед загрузкой в ​​Google App Engine

from google.appengine.api import images 
from google.appengine.ext import blobstore 
from google.appengine.ext.webapp import blobstore_handlers 
from google.appengine.ext import db 

class ImageModel(db.Model): 
    image1 = blobstore.BlobReferencePropert(required = True) 


class UploadImageHandler(BaseHandler, blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
      upload_files = self.get_uploads('image1') 
      blob_info = upload_files[0] 
      blob_key = blob_info.key() 
      img = images.Image(blob_key = blob_key) 
      img.resize(width = 500, height = 500) 

      i = ImageModel(image1 = img) 
      i.put() 

Конечно, это не работает, так как IMG нет дольше капля. Как преобразовать изображение обратно в blob, а затем загрузить в базу данных. Я не хочу динамически обрабатывать изображение и изменять его размер. Мне нужно иметь измененное изображение в базе данных.

ответ

2

Теперь Blobstore поддержки файл записи непосредственно https://developers.google.com/appengine/docs/python/blobstore/overview#Writing_Files_to_the_Blobstore

так что вы можете иметь что-то вроде этого.

# resize your img 

# create file 
file_name = files.blobstore.create(mime_type='application/octet-stream') 
with files.open(file_name, 'a') as f: 
    f.write(img)  

# Finalize the file. Do this before attempting to read it. 
files.finalize(file_name) 

# Get the file's blob key 
blob_key = files.blobstore.get_blob_key(file_name) 
+0

Спасибо. Я смог сделать то, что мне нужно. – piyushg91

+0

Это устарело сейчас :( – Lipis