我对Python还比较陌生。目前我正在制作一个原型,它可以获取图像,创建缩略图并将其上传到ftp服务器。
到目前为止,我已经准备好了获取图像、转换和调整大小的部分。
遇到的问题是使用PIL(pillow)图像库转换后的图像类型与storebinary()上传时可用的类型不同。
我已经尝试了一些方法,例如使用StringIO或BufferIO在内存中保存图像。但我总是会遇到错误。有时图像确实被上传了,但文件似乎是空的(0字节)。
以下是我正在使用的代码:
import os
import io
import StringIO
import rawpy
import imageio
import Image
import ftplib
# connection part is working
ftp = ftplib.FTP('bananas.com')
ftp.login(user="banana", passwd="bananas")
ftp.cwd("/public_html/upload")
def convert_raw():
files = os.listdir("/home/pi/Desktop/photos")
for file in files:
if file.endswith(".NEF") or file.endswith(".CR2"):
raw = rawpy.imread(file)
rgb = raw.postprocess()
im = Image.fromarray(rgb)
size = 1000, 1000
im.thumbnail(size)
ftp.storbinary('STOR Obama.jpg', img)
temp.close()
ftp.quit()
convert_raw()
我尝试过的方法:
temp = StringIO.StringIO
im.save(temp, format="png")
img = im.tostring()
temp.seek(0)
imgObj = temp.getvalue()
我遇到的错误出现在这一行:ftp.storbinary('STOR Obama.jpg', img)
。
错误信息:
buf = fp.read(blocksize)
attributeError: 'str' object has no attribute read