【问题标题】:Getting blank image when using imgur's API使用 imgur 的 API 时获取空白图像
【发布时间】:2011-07-31 03:04:15
【问题描述】:

我目前正在开发一个小脚本来截取屏幕截图并使用 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编码方法可能已经关闭但我很茫然。

【问题讨论】:

  • 您确定屏幕截图已保存到您已阅读的文件中吗?尝试使用硬编码名称的另一张图片。
  • @agf 是的,文件 is 在那里,我尝试使用硬编码路径指向另一个图像,但无济于事。不过还是谢谢。

标签: python urllib2 imgur


【解决方案1】:

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

from base64 import b64encode

(...)

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

【讨论】:

  • 仍然得到相同的结果。
  • 我不知道出了什么问题...我搜索了一些 python 和 imgur 的 JSON API 示例,您的代码似乎正确:garciat.info/easy-python-imgur-uploaderpastebin.com/NiaJbhhP
  • @eryksun:就是这样。非常感谢!
  • @FernandoMartin 如果答案对你有用,你应该accept它,因为它给了花时间写答案的人一些分数
  • @TankorSmash:我知道,但答案对我不起作用;评论确实如此,而且是由不同的作者撰写的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 2017-10-09
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
相关资源
最近更新 更多