在上传到Google App引擎之前调整图片大小

时间:2013-05-12 06:48:23

标签: python image google-app-engine blob

我希望能够在使用google app engine将其保存到数据库之前调整图像blob的大小

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。如何将图像转换回blob然后上传到数据库。我不想动态地提供图像并调整大小。我需要在数据库中有一个调整大小的图像。

1 个答案:

答案 0 :(得分: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)