使用Python实现下载并保存网络图片
引言
今天我们来学习一个简单有趣的 Python 项目:从网上下载图片并保存到电脑!你不需要有编程经验,这篇文章将以最简单的方式一步步教你完成。
项目目标
下载一张网络图片
在电脑上显示图片
保存图片到本地文件
准备工作
我们需要用到两个 Python 库:
Pillow (PIL):用于处理图片。
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)
运行结果
程序会下载并显示图片。
图片会被保存到你指定的位置,比如当前文件夹下的 downloaded_image.jpg。
总结
这段代码展示了如何用 Python 完成一个小项目。它既简单又实用,是初学者学习编程的好例子。
到此这篇关于使用Python实现下载并保存网络图片的文章就介绍到这了,更多相关Python下载保存网络图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Cpython编译后再使用Pyinstaller打包的详细教程
pyinstaller是一个第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,这篇文章主要介绍了Cpython编译后再使用Pyinstaller打包的详细教程,需要的朋友可以参考下2023-11-11python可视化 matplotlib画图使用colorbar工具自定义颜色
这篇文章主要介绍了python可视化 matplotlib画图使用colorbar工具自定义颜色,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-12-12python pprint模块中print()和pprint()两者的区别
这篇文章主要介绍了python pprint模块中print()和pprint()两者的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-02-02
最新评论