PIL.Image.save() to an FTP server

≡放荡痞女 提交于 2020-01-24 20:52:05

问题


Right now, I have the following code:

pilimg = PILImage.open(img_file_tmp) # img_file_tmp just contains the image to read
pilimg.thumbnail((200,200), PILImage.ANTIALIAS)
pilimg.save(fn, 'PNG') # fn is a filename

This works just fine for saving to a local file pointed to by fn. However, what I would want this to do instead is to save the file on a remote FTP server.

What is the easiest way to achieve this?


回答1:


Python's ftplib library can initiate an FTP transfer, but PIL cannot write directly to an FTP server.

What you can do is write the result to a file and then upload it to the FTP server using the FTP library. There are complete examples of how to connect in the ftplib manual so I'll focus just on the sending part:

# (assumes you already created an instance of FTP
#  as "ftp", and already logged in)
f = open(fn, 'r')
ftp.storbinary("STOR remote_filename.png", f)

If you have enough memory for the compressed image data, you can avoid the intermediate file by having PIL write to a StringIO, and then passing that object into the FTP library:

import StringIO
f = StringIO()
image.save(f, 'PNG')

f.seek(0) # return the StringIO's file pointer to the beginning of the file

# again this assumes you already connected and logged in
ftp.storbinary("STOR remote_filename.png", f)


来源:https://stackoverflow.com/questions/15715940/pil-image-save-to-an-ftp-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!