如何用 Python 下载并保存网络图片

如何用 Python 下载并保存网络图片

  • 引言
  • 项目目标
  • 准备工作
  • 代码分解和讲解
  • 1. 从网络加载图片
  • 2. 保存图片到本地
  • 3. 主程序逻辑
  • 运行结果
  • 总结
  • 引言

    今天我们来学习一个简单有趣的 Python 项目:从网上下载图片并保存到电脑!你不需要有编程经验,这篇文章将以最简单的方式一步步教你完成。


    项目目标

  • 下载一张网络图片。
  • 在电脑上显示图片。
  • 保存图片到本地文件。

  • 准备工作

    我们需要用到两个 Python 库:

    1. Pillow (PIL):用于处理图片。
    2. Requests:用于从网上获取数据。

    如果你还没有安装它们,可以在终端运行以下命令:

    pip install pillow requests
    

    代码分解和讲解

    我们将代码分成几个简单的部分。

    1. 从网络加载图片

    这个函数负责从指定的 URL 加载图片,并返回一个图片对象。

    from PIL import Image
    import requests
    from typing import Optional
    
    def load_image_from_url(url: str) -> Optional[Image.Image]:
        """
        从指定的URL加载图片并返回图片对象。
    
        参数:
            url (str): 图片的URL地址。
    
        返回:
            Optional[Image.Image]: 如果加载成功,返回图片对象;否则返回 None。
        """
        try:
            # 从URL获取图片数据
            with requests.get(url, stream=True) as response:
                response.raise_for_status()  # 检查请求是否成功
                return Image.open(response.raw)
        except requests.exceptions.RequestException as e:
            print(f"网络请求出错: {e}")
        except IOError as e:
            print(f"图片处理出错: {e}")
        return None
    

    关键点:

  • 我们用 requests.get 获取图片数据,并用 with 自动管理资源。
  • 如果有网络问题,raise_for_status() 会抛出错误,帮助我们发现问题。
  • Image.open 将图片数据转换为可以处理的图片对象。

  • 2. 保存图片到本地

    这个函数将图片保存到你指定的路径。

    def save_image(image: Image.Image, file_path: str) -> None:
        """
        保存图片到指定路径。
    
        参数:
            image (Image.Image): 要保存的图片对象。
            file_path (str): 保存路径。
        """
        try:
            image.save(file_path)
            print(f"图片已保存为 {file_path}")
        except IOError as e:
            print(f"图片保存出错: {e}")
    

    关键点:

  • 如果保存时出现问题,比如路径错误,IOError 会提示你。

  • 3. 主程序逻辑

    这是整个程序的入口。

    if __name__ == "__main__":
        # 定义图片的URL和保存路径
        url = "https://images.pexels.com/photos/531294/pexels-photo-531294.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2"
        local_file_path = "downloaded_image.jpg"
    
        # 加载图片
        image = load_image_from_url(url)
    
        if image:
            # 显示图片
            image.show()
    
            # 保存图片
            save_image(image, local_file_path)
    

    运行结果

    1. 程序会下载并显示图片。
    2. 图片会被保存到你指定的位置,比如当前文件夹下的 downloaded_image.jpg

    总结

    这段代码展示了如何用 Python 完成一个小项目。它既简单又实用,是初学者学习编程的好例子。

    你学会了吗?不妨试试用不同的图片 URL,看看结果会怎样! 🎉

    作者:engchina

    物联沃分享整理
    物联沃-IOTWORD物联网 » 如何用 Python 下载并保存网络图片

    发表回复