2017-07-03 2 views
0

J'ai donc du code qui télécharge une image, la superpose et affiche le résultat. Cependant, je reçois un 403 (probablement de l'agent utilisateur) en essayant de télécharger à partir d'un site spécifique. Comment puis-je créer un code similaire à celui-ci qui fait la même chose?Création d'un comportement similaire sans 403? (Python Wget)

from PIL import Image 
import os, sys 
import wget 
import requests 


url = "https://cdn.discordapp.com/avatars/247096918923149313/34a66572b9339acdaa1dedbcb63bc90a.png?size=256" 
filename = wget.download(url) 

pp = Image.open(filename) 
pp.save("image2c.png") 
pp = Image.open("image2c.png").convert("LA") 
pp.save("image2c.png") 

background = Image.open("image1.png").convert("RGBA") 
foreground = Image.open("image2c.png").convert("RGBA") 
foreground = foreground.resize((256, 256), Image.BILINEAR) 

background.paste(foreground, (125, 325), foreground) 
background.show() 
os.remove(filename) 

Répondre

0

Il semble que la bibliothèque python wget ont quelques problèmes avec https ou paramètres ... Vous pouvez utiliser les requêtes (vous avez déjà importé).

from PIL import Image 
import os, sys 
import requests 
from StringIO import StringIO 

url = "https://cdn.discordapp.com/avatars/247096918923149313/34a66572b9339acdaa1dedbcb63bc90a.png?size=256" 
response = requests.get(url) 
pp = Image.open(StringIO(response.content)) 
pp.save("image1.png") 

pp = Image.open("image2c.png").convert("LA") 
pp.save("image2c.png") 

background = Image.open("image1.png").convert("RGBA") 
foreground = Image.open("image2c.png").convert("RGBA") 
foreground = foreground.resize((256, 256), Image.BILINEAR) 
background.paste(foreground, (125, 325), foreground) 
background.show() 

VOIR: How do I read image data from a URL in Python?

pour python3:

from PIL import Image 
import os, sys 
import requests 
from io import BytesIO 

url = "https://cdn.discordapp.com/avatars/247096918923149313/34a66572b9339acdaa1dedbcb63bc90a.png?size=256" 
response = requests.get(url) 
pp = Image.open(BytesIO(response.content)) 
pp.save("image1.png") 

voir: https://stackoverflow.com/a/31067445/8221879

+0

Je reçois une erreur ici (en utilisant Python 3) TypeError: initial_value doit être str ou None, pas octets –

+0

Hmmm, testé sur python2.7. Pourriez-vous essayer cette suggestion: https://stackoverflow.com/a/31067445/8221879? de l'image importation PIL import os, sys demandes d'importation d'importation io BytesIO url = "https://cdn.discordapp.com/avatars/247096918923149313/34a66572b9339acdaa1dedbcb63bc90a.png?size=256" réponse = demandes .get (url) pp = Image.open (BytesIO (response.content)) pp.save ("image1.png") –