如何用Python将internet上的图像保存到本地文件
我想从reddit和imgur获取直接的图像链接,保存到文件中,然后上传到twitter。我这样做没有真正的理由,我只是想练习一下,因为我对编程还不熟悉。但我不确定如何将图像链接保存到文件。我遇到了一个StackOverflow问题,问了同样的问题,给这个人的答案是使用如何用Python将internet上的图像保存到本地文件,python,image,save,Python,Image,Save,我想从reddit和imgur获取直接的图像链接,保存到文件中,然后上传到twitter。我这样做没有真正的理由,我只是想练习一下,因为我对编程还不熟悉。但我不确定如何将图像链接保存到文件。我遇到了一个StackOverflow问题,问了同样的问题,给这个人的答案是使用urllib.retrieve 这是我正在使用的代码: def post_to_twitter(): if 'i.redd.it/' in submission.url or 'i.imgur.com/' in submi
urllib.retrieve
这是我正在使用的代码:
def post_to_twitter():
if 'i.redd.it/' in submission.url or 'i.imgur.com/' in submission.url:
print(submission.url)
urllib.urlretrieve(str(submission.url),'<my directory>')
elif 'i.redd.it/' not in submission.url or 'i.imgur.com/' not in submission.url:
print('No direct imgur or reddit image link')
submission.url
返回指向图像的链接,因此您可以将其替换为您想要的任何内容,只要它作为字符串等于直接图像链接,例如my_url=”http://i.imgur.com/qjMiF2A.gif“
'Reddit To Twitter download Images\\\'+submission.id+'.jpeg'
是要保存的图像的名称。还可以在其中指定路径。但是,因为我无法手动指定文件另存为什么,所以我使用submission.id作为文件名,这样我可以保证它始终是唯一的。然后,我只需在其末尾添加.jpeg
,以指定文件类型 试试这个:
import os
import urllib.request
import urllib.error
def saveImg(url,path,name):
#url is imgurl
#path is your folder
#name is like tmp.png
if not os.path.exists(path):
os.mkdir(path)
try:
response=urllib.request.urlopen(url);
except urllib.error.URLError as e:
return 0
except urllib.error.HTTPError as e:
return 0
code=response.read()
filehandle=open(path+name,'wb');
filehandle.write(code)
filehandle.close()
return 1
您需要先pip
PIL
和请求
最干净的方法是
from PIL import Image
import requests
from io import BytesIO
r=requests.get(name)
image=Image.open(BytesIO(r.content))
image.save('{0}.jpg'.format("Image"))
实际上,我用我使用的原始代码实现了这一点,但做了一些微调 我用过:
urllib.request.urlretrieve(submission.url, 'Reddit To Twitter Downloaded Images\\'+submission.id+'.jpeg')
urllib.request.urlretrieve(submission.url, 'Reddit To Twitter Downloaded Images\\'+submission.id+'.jpeg')
submission.url
返回指向图像的链接,因此您可以将其替换为您想要的任何内容,只要它作为字符串等于直接图像链接
'Reddit To Twitter download Images\\\'+submission.id+'.jpeg'
是要保存的图像的名称。还可以在其中指定路径。但是,因为我无法手动指定文件另存为什么,所以我使用submission.id作为文件名,这样我可以保证它始终是唯一的。然后,我只需在其末尾添加.jpeg
,以指定文件类型 Imgur不起作用,他们正在使用reacter,除非它确实起作用。我编辑了我的原始问题以包含解决方案,并自己发布了一个答案。当我尝试pip install PIL
时,我收到了这条消息-不管怎样,我实际上是用我在原始帖子中的那一行代码完成的,但我对它做了一些修改以使其正常工作。如果你想知道我是如何做到的,我把这个解决方案作为一个答案发布了出来。不过,我实际上是用我在原始帖子中的那一行代码来实现的,但是我对它做了一些修改,使它能够工作。如果你想知道我是怎么做的,我就把这个解决方案贴出来作为答案。