使用Imgur API时获取空白图像

3 投票
1 回答
1454 浏览
提问于 2025-04-16 22:35

我现在正在用Python开发一个小脚本,目的是截屏并把截图上传到imgur。

代码大概是这样的:

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编码的方法有问题,但我不知道该怎么解决。

1 个回答

0

你应该使用来自 base64 模块的 b64encode 函数。我不知道为什么,但它会给出不同的结果:

from base64 import b64encode

(...)

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

撰写回答