2013-03-30 143 views
1

現在,我有以下代碼:PIL.Image.save()到FTP服務器

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 

這只是正常保存到本地文件指向fn。但是,我希望這樣做是爲了將文件保存在遠程FTP服務器上。

實現此目的的最簡單方法是什麼?

回答

3

Python's ftplib library可以啓動FTP傳輸,但PIL無法直接寫入FTP服務器。

可以做的是將結果寫入文件,然後使用FTP庫將其上載到FTP服務器。還有如何在ftplib手動連接,所以我就只關注發送部分完整的例子:

# (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) 

如果您有壓縮的圖像數據足夠的內存,您可以通過有PIL避免中間文件寫入StringIO,然後將該對象傳遞到FTP庫中:

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)