我從屏幕截圖中獲取了一個python圖像對象,我想將它保存在運行PHP的服務器上。
我想完全沒有在用戶的計算機上保存圖像,所以我想發送PHP腳本的一個編碼,它可以瞭解哪些可以從PIL圖像實例中獲得。到目前爲止,我已經嘗試將圖像保存到緩衝區(在Python中)並將數據發送到PHP函數file_put_contents,但生成的文件不是正確的.png圖像(我剛剛保存了PNG編碼字符串與.png文件擴展名的文件......)使用PHP在服務器上保存PIL生成的PNG圖像
這裏是我的代碼...
客戶
# shot is an Image instance
buff = StringIO()
shot.save(buff, 'PNG')
args = {'filename':'eg.png','image': buff.getValue()}
data = urllib.urlencode(args)
request = urllib2.Request(self.uploadURL, data)
urllib2.urlopen(request).read()
服務器
# 'filename' arg ends in .png, 'image' arg is the upload parameter^
$filename = 'images/'.$_POST['filename'];
file_put_contents($filename, $_POST['image']);
我接受它我需要在使用PHP轉換圖像數據之前,我嘗試將其寫入文件,但我不知道如何。
我之前通過將圖像保存到文件併發送基於64位的二進制內容完成此操作,但我不希望將該圖像保存在客戶機的計算機上。
謝謝!
免責聲明:這個問題和我對編碼的感覺對我來說完全是'icky',所以很抱歉成爲這樣一個巨大的noob /可怕的誤解。
請點擊此鏈接http://stackoverflow.com/questions/7877282/how-to-send-image-generated-by-pil-to-browser可能對你的幫助。 – Anup 2013-02-26 12:41:37
@Anup我真的不想將圖像保存在他們的電腦上,即使只是暫時的。我簡直不相信它是必需的(或者一個好的解決方案) – 2013-02-26 12:45:37
我檢查了你的解決方案的Python方面,它似乎工作:它應該給'上傳()'整個PNG數據。您需要檢查服務器端真正傳輸和接收的內容。如果使用文本編輯器打開最終的.png文件,它的外觀如何? – 2013-02-26 12:51:43