2011-07-31 36 views
3

我目前正在開發一個小腳本來截取屏幕截圖並使用Python將它們上傳到imgur。使用imgur的API時獲取空白圖像

的代碼看起來是這樣的:

import time 
import os 
import ImageGrab 
import urllib 
import urllib2 

time.sleep(1) 
shot = ImageGrab.grab() 
dir = os.path.join(r'C:\SAMPLE\PATH', 'Screen ' + time.strftime(r'%Y-%m-%d %H-%M-%S') + '.png') 
shot.save(dir) 

data = urllib.urlencode({"key":'MY_API_KEY', "image":urllib.quote(open(dir,'rb').read().encode("base64"))}) 

site = urllib2.Request("http://imgur.com/api/upload.json", data) 
s = urllib2.urlopen(site) 

print s.read() 

我從imgur迴應,但是當我打開鏈接我得到一個空白圖像(雖然它的分辨率是正確的)。我認爲base64編碼方法可能會關閉,但我很茫然。

+0

你確定screengrab已經保存到您已經閱讀文件?用硬編碼的名稱試試它。 – agf

+0

@agf是的,文件*是*那裏,我試圖與硬編碼路徑到另一個圖像無濟於事。不過謝謝。 –

回答

1

您應該使用base64模塊中的b64encode。我不知道爲什麼,但它給出了不同的結果:

from base64 import b64encode 

(...) 

data = urllib.urlencode({"key":'MY_API_KEY', "image":urllib.quote(b64encode(open(dir,'rb').read()))}) 
+0

仍然得到相同的結果。 –

+0

我不知道什麼是錯的,然後...我搜索了python和imgur的JSON API的幾個例子,你的代碼似乎是正確的:http://garciat.info/easy-python-imgur-uploader http:// pastebin .com/NiaJbhhP – nmat

+0

@eryksun:就是這樣。非常感謝! –

相關問題