2015-03-31 43 views
0

我想从一个桶(bucket1)获取图像并将其放入另一个桶(bucket2) 我已经在python中编写了下面的代码片段我正在尝试,但我得到的错误:IOError:无法识别图像file.Please help.Thanks!如何从一个桶中获取图像并将其放入另一个S3 boto

conn = boto.connect_s3() 
filename='image2.jpg' 
bucket=conn.get_bucket('bucket1') 
key= bucket.get_key(filename) 
fp = open (filename, "w+") 
key.get_file (fp) 


img = cStringIO.StringIO(fp.read()) 
im = Image.open(img) 

b = conn.get_bucket('bucket2') 
k = b.new_key('image2.jpg') 
k.set_contents_from_string(out_im2.getvalue()) 

回答

1

为什么不直接使用copy_key避免下载和写作对象:

b = conn.get_bucket('bucket2') 
k = b.copy_key('image2.jpg', 'bucket1', 'image2.jpg') 

当你想要做一些图像处理,你需要寻求回文件的开头写文件后:

fp.seek(0, 0) 
img = cStringIO.StringIO(fp.read()) 
im = Image.open(img) 

b = conn.get_bucket('bucket2') 
k = b.new_key('image2.jpg') 
k.set_contents_from_string(...) 
+0

感谢您的回复!其实我想获取它,调整它,然后把它放在bucket2中(我还没有编写调整它的中间代码) – ABS 2015-03-31 14:36:46

+0

有什么理由不能在'Image.open(fp)'中使用fp,什么是图像 - '从PIL导入图像'?您是否需要在'fp'上为开放模式添加'b'二进制#if – AChampion 2015-03-31 14:41:49

+0

我did-import图片 – ABS 2015-03-31 14:43:52

相关问题