【问题标题】:Creating similar behaviour without a 403? (Python Wget)在没有 403 的情况下创建类似的行为? (Python Wget)
【发布时间】:2017-12-06 09:10:24
【问题描述】:

所以我有一些代码可以下载图像,覆盖它并显示结果。但是,当我尝试从特定站点下载时,我得到了 403(可能来自用户代理)。如何创建与此类似的代码来做同样的事情?

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)

【问题讨论】:

    标签: python python-3.x wget


    【解决方案1】:

    看来 wget python 库无论是 https 还是参数都有一些问题...您可以使用请求(您已经导入了它)。

    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()
    

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

    对于 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")
    

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

    【讨论】:

    • 这里出现错误(使用 python 3)TypeError: initial_value must be str or None, not bytes
    • 嗯,在 python2.7 上测试过。你可以试试这个建议:stackoverflow.com/a/31067445/8221879 吗? from PIL import Image import os, sys import requests from io import BytesIO url = "cdn.discordapp.com/avatars/247096918923149313/…" response = requests.get(url) pp = Image.open(BytesIO(response.content)) pp.save("image1.png ")
    猜你喜欢
    • 2017-10-12
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多