我正在上传文件,我可以使用SimpleS3保存到S3:
from simples3.bucket import S3Bucket
upload = request.POST['image']
s = S3Bucket("cdn", s3.access_key, s3.secret_key)
s.put(upload.filename, upload.file.read())
在将其保存为文件并上传之间,我使用PIL或Imagemagick将文件作为缩略图保存,具体取决于上传的图像文件类型。该过程将文件转换为图像。我的问题是如何将该图像作为文件打开?我正在尝试将缩略图上传到亚马逊的S3,就像我上面那样。我的代码是我正在尝试的想法:
thumb = self._im.copy() #where _im is the Image
s = S3Bucket("cdn", s3.access_key, s3.secret_key)
s.put(self.filename+ext, thumb)
我尝试过没有成功:
f = open(thumb, "rb")
s.put(self.filename+ext, f.read()
使用Image.save函数将文件写入驱动器然后将其作为文件打开,可以正常工作,但效率极低:
thumb.save(self.filename+ext)
f = open(self.filename+ext, 'r')
s.put(self.filename+ext, f.read())
答案 0 :(得分:4)
想出来:
from StringIO import StringIO
f = StringIO()
thumb.save(f, ext)
s.put(self.filename+ext, f.getvalue())
答案 1 :(得分:0)
对于ImageMagick案例,如果您使用的是PythonMagick,则可以使用底层Blob类,
>>> from PythonMagick import Image, Blob
>>> image = Image("images/test_image.miff")
>>> image.magick("PNG")
>>> blob = Blob()
>>> image.write(blob)
>>> len(blob.data)
28282
>>> blob.data[0:20]
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x94'