0

我希望能够在使用谷歌应用引擎将图像 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,然后上传到数据库。我不想动态地提供图像并调整大小。我需要在数据库中有一个调整大小的图像。

4

1 回答 1

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)
于 2013-05-12T13:35:18.657 回答