测试Python下载图片的三种方法

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试Python下载图片的三种方法相关的知识,希望对你有一定的参考价值。

简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理。本文测试了urllib, request两个软件包对图片进行下载效果。如果图片原网页有了防止下载机制,是无法下载图片。

URL图片下载 目 录
Contents
应用背景 测试图像 测试下载 URLLIB方法 requests.get 方法 chunk下载 测试总结

 

§01 URL图片下载


1.1 应用背景

  由于需要将网页上的图片链接直接添加在TEASOFT软件中,需要利用Python将对应的图片链接下载到本地,然后转换成JPEG文件,最后添加在TEASOFT软件中。

  在 Python 下载图片的三种方法 演示了利用Python三种下载软件的方式下面进行测试,查看哪一种迅速和快捷。其中的方法在 Download Image from URL using Python 也进行的展示。

1.1.1 测试图像

  2022年2月23日CSDN封面苹果图片链接:

▲ 图1.1.1 2022年2月23日CSDN封面苹果图片链接

  使用右键利用鼠标点击图片,出现的快捷菜单。使用其中的“复制图片地址”(对应的快捷键为 “E”) 便可以将图片的URL复制到剪切板。

▲ 图1.1.2 使用右键利用鼠标点击图片,出现的快捷菜单

https://blog.csdn.net/m0_50065287/article/details/123045126?spm=1000.2115.3001.5926

  下面就以这个图片为例,通过Python编程进行自动下载。

1.2 测试下载

1.2.1 URLLIB方法

(1)urlretrieve 方法

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *

urlimg = r'https://blog.csdn.net/m0_50065287/article/details/123045126?spm=1000.2115.3001.5926'
imgfile = r'd:\\temp\\img1.png'

def urllib_download(url, imgfile):
    from urllib.request import urlretrieve
    urlretrieve(url, imgfile)

urllib_download(urlimg, imgfile)
print('\\a')

  执行完之后,出现如下的信息。这究竟是为什么呢

▲ 图1.2.1 图片无法查看

  这个原因可能是由于这个照片来自于CSDN首页的照片,它禁止被网络爬虫进行下载。下面更换一个别的网页中出现的图片进行测试。

  下面是更换好吧的图片链接: 下载图片连接 : https://img-blog.csdnimg.cn/0a4a866060f749ce913721963216dc05.png#pic_center

▲ 图1.2.2 更换后的下载图片下载网页

  使用上面的代码便可以正常下载图片。下面是下载后使用Windows Image View看到的图片。

▲ 图1.2.3 更换另外一个图片远程连接,便可以正常下载了

(2)下载图片格式

  请注意,下载文件的格式为 “.png”,如果修改成“.bmp”或者“.jpg”,在Windows下仍然可以使用Windows 照片查看进行打开,但直接粘贴在 TEASOFT 存在格式错误

(3)urlopen 方法

def urllib_open(urlimg, imgfile):
    import urllib.request
    r = urllib.request.urlopen(urlimg)
    with open(imgfile, 'wb') as f:
        f.write(r.read())

urllib_open(urlimg, imgfile)
def urllib_open(urlimg, imgfile):
    import urllib.request
    req = urllib.request.Request(urlimg, headers='User-Agent': 'Mozilla/5.0')
    with open(imgfile, 'wb') as f:
        with urllib.request.urlopen(req) as r:
            f.write(r.read())

urllib_open(urlimg, imgfile)

  测试 上面程序结果正常。

1.2.2 requests.get 方法

def request_download(url, imgfile):
    import requests
    r = requests.get(url)
    with open(imgfile, 'wb') as f:
        f.write(r.content)

request_download(urlimg, imgfile)

1.2.3 chunk下载

def chunk_download(urlimg, imgfile):
    import requests
    r = requests.get(urlimg, stream=True)
    with open(imgfile, 'wb') as f:
        for chunk in r.iter_content(chunk_size=32):
            f.write(chunk)

chunk_download(urlimg, imgfile)

  以上三种方式经过测试,效果都是一致的。

 

试总结 ※


  过Python软件包对网络URL图片链接进行下载,可以加快后期处理。本文测试了urllib, request两个软件包对图片进行下载效果。如果图片原网页有了防止下载机制,是无法下载图片。


■ 相关文献链接:

● 相关图表链接:

以上是关于测试Python下载图片的三种方法的主要内容,如果未能解决你的问题,请参考以下文章

前端上传图片的三种方法

图片压缩的三种方式

UGUI更换图片的三种方法

picturebox加载图片的三种方法与网站验证码的抓取

让网页图片变灰色的三种方法

iOS给UIImageView添加圆角的三种方法