【问题标题】:Get Image Dimensions from Url in Python在 Python 中从 Url 获取图像尺寸
【发布时间】:2013-07-25 17:17:00
【问题描述】:

我想获得从网站上的查看器看到的图像尺寸。

我正在使用漂亮的汤,我得到这样的图片链接:

links = soup.findAll('img', {"src":True})

我获取图像尺寸的方法是使用:

link.has_key('height')
height = link['height']

宽度也类似。但是,某些链接仅具有这些属性之一。我尝试了 PIL,但如果下载,它会给出实际的图像大小。

还有其他方法可以找到网站上显示的图像尺寸吗?

【问题讨论】:

    标签: python image python-imaging-library dimensions


    【解决方案1】:

    您的主要问题是您在 html 源代码中搜索高度和宽度的引用。在大多数情况下(当事情做得很好时),图像没有在 html 中指定的高度和宽度,在这种情况下,它们会以图像文件本身的高度和宽度呈现。

    要获取图像文件的高度和宽度,您需要实际查询并加载该文件,然后使用图像处理检查高度和宽度。如果这是您想要的,请告诉我,我会帮助您完成该过程。

    import urllib, cStringIO
    from PIL import Image
    
    # given an object called 'link'
    
    SITE_URL = "http://www.targetsite.com"
    URL = SITE_URL + link['src']
    # Here's a sample url that works for demo purposes
    # URL = "http://therealtomrose.therealrosefamily.com/wp-content/uploads/2012/08/headshot_tight.png"
    file = cStringIO.StringIO(urllib.urlopen(URL).read())
    im=Image.open(file)
    width, height = im.size
    if link.has_key('height'):
        height = link['height']  # set height if site modifies it
    if link.has_key('width'):
        width = link['width']  # set width if site modifies it
    

    要求: 此方法需要 PIL 库进行图像处理。

    # from command line in a virtual environment
    pip install PIL
    

    【讨论】:

    • 我假设这会给我实际的图像尺寸。我实际上是在寻找网站上给出的图像,你知道我该怎么做吗?谢谢!
    • 当然,我刚刚添加了对手动修改尺寸的站点的处理。我已经针对大多数未指定图像尺寸的网站优化了此脚本,大多数网站都是如此。
    • 谢谢!这就是我对我的代码所做的。但是,我遇到了修改图像的问题,但只有一个键存在。你知道解决这个问题的另一种方法吗?谢谢!
    • 这会下载图片吗?
    • 在您检查 HTML 是否指定图像高度或宽度的部分,如果发生这种情况,您是否不需要重新调整其他尺寸?例如,如果我有一个 600x600 的图像并输入 HTML width=300,它将显示为 300x300。
    猜你喜欢
    • 2011-08-02
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多