python-mini-projects:使用 tqdm 与 Pillow 实现带终端进度条的批量图片缩放
示例工程【免费下载链接】python-mini-projectsA collection of simple python mini projects to enhance your python skills项目地址https://gitcode.com/gh_mirrors/py/python-mini-projects点击查看免费下载导读本篇技术指南聚焦 python-mini-projects 仓库中的Terminal_progress_bar_with_images_resizing迷你项目讲解如何用tqdm在终端展示批量图片缩放任务的实时进度并用 Pillow 完成图片压缩缩放。读完本文你将掌握tqdm迭代器包装法的基本用法、Image.thumbnail()保持宽高比的缩放原理以及一套可直接复制运行的批量图片处理脚本并理解其输入输出约定与已知边界。项目定位与适用场景在 python-mini-projects 仓库的 projects 目录下Terminal_progress_bar_with_images_resizing是一个演示性极强的工具型迷你项目它的核心诉求不是如何缩放一张图片而是当脚本需要批量处理大量图片时如何让用户直观地看到处理进度。正如其 Readme.md 所述Here I just take example of image resizing for displaying progress bar. when we convert lots of images at time we can use progress bar to show how many images are resized.即以批量缩放图片作为业务载体展示如何在终端中呈现处理进度。这种用真实业务演示进度条的思路使 tqdm 的用法变得具体可感适合初学者理解进度条库 实际任务的配合方式。环境准备与依赖安装根据文档要求需要两个 Python 库pip install tqdm pip install Pillowtqdm用于在终端渲染进度条README 明确说明 This Library is for showing progress barPillow用于图片的打开、缩放与保存。仓库同时提供了 requirements.txt其内容为tqdm4.48.2 PIL1.1.6需要注意一个细节requirements.txt中固定的是旧版PIL1.1.6而 README 推荐安装的是PillowPillow 是 PIL 的活跃维护分支。实际运行时以pip install Pillow安装即可版本号未固定时请使用较新的 Pillow 版本详见下文ANTIALIAS 兼容性一节的说明。核心实现逐行解析项目入口脚本为 progress_bar_ with_images_resizing.py注意文件名中间含有一个空格全文约 30 行逻辑分为三个部分导入与单图处理函数、输入收集、进度条主循环。1. 导入与单图缩放函数from tqdm import tqdm from PIL import Image import os from time import sleep def Resize_image(size, image): if os.path.isfile(image): try: im Image.open(image) im.thumbnail(size, Image.ANTIALIAS) im.save(resize/ str(image) .jpg) except Exception as ex: print(fError: {str(ex)} to {image})Resize_image函数L7-L14负责处理单张图片os.path.isfile(image)先过滤目录项避免把目录当作图片打开Image.open(image)打开图片但并不立即加载全部像素数据直到 save 时才真正解码写入im.thumbnail(size, Image.ANTIALIAS)是 Pillow 提供的缩略图方法传入一个(width, height)二元组作为最大边界图片会按比例缩小到不超过该边界且始终保持原始宽高比不会拉伸变形im.save(resize/ str(image) .jpg)将结果以 JPG 格式保存到当前目录下的resize子目录文件名沿用原文件名追加.jpg后缀外层try/except捕获异常并打印出错文件保证单个文件失败不会中断整个批量任务。2. 收集用户输入并准备输出目录path input(Enter Path to images : ) size input(Size Height , Width : ) size tuple(map(int, size.split(,))) os.chdir(path) list_images os.listdir(path) if resize not in list_images: os.mkdir(resize)脚本以交互方式运行L17-L25图片路径输入存放原图的目录路径随后os.chdir(path)将工作目录切换到该路径目标尺寸输入格式为Height , Width如100, 100通过size.split(,)按逗号拆分再用map(int, ...)逐项转成整数最终得到tuple(map(int, ...))形式的(height, width)二元组传给thumbnail输出目录os.listdir(path)列出输入目录的全部条目若其中没有resize目录则调用os.mkdir(resize)创建。注意创建动作发生在列表之后因此本轮列表list_images不会包含新建的resize目录。3. 进度条主循环for image in tqdm(list_images, descResizing Images): Resize_image(size, image) sleep(0.1) print(Resizing Completed!)这是整个项目的点睛之处L27-L29用tqdm(list_images, descResizing Images)包裹列表tqdm 会自动根据迭代长度计算进度百分比、已处理数量/总数以及剩余时间ETA并在终端渲染出动态进度条descResizing Images参数为进度条附加描述文案便于区分不同任务的进度条sleep(0.1)人为引入 100ms 延迟——因为单张图片缩放速度很快不加延时进度条会一闪而过加上延时是为了让进度条效果可被观察演示用途循环结束后打印Resizing Completed!提示任务完成。tqdm 的更多用法仓库内的旁证tqdm在本仓库中被多次使用可帮助理解其 API 的灵活性在 Instagram_profile/profilepic.py 中使用tqdm(totalfile_size, unitB, unit_scaleTrue, descusername, asciiTrue)显示已知总字节数的下载进度——total用于指定总规模不依赖可迭代对象长度unit/unit_scale用于以人类可读单位KB/MB显示字节asciiTrue则用 ASCII 字符渲染进度条兼容不支持 Unicode 的终端在 News_website_scraper/moneycontrol_scrapper.py 中以for idx, link in enumerate(tqdm(nextlinks))的形式直接包装待爬取的链接列表与本文项目包装待处理图片列表的用法一致。由此可见tqdm 的核心模式是把一个可迭代对象或 total 总量交给 tqdm循环体内的真实工作量即为进度条的实际推进。本文项目的tqdm(list_images, desc...)即属于最基础的迭代器包装用法。Pillow thumbnail 缩放原理与兼容性注意保持宽高比的最大边界缩放与直接指定精确尺寸的Image.resize()不同Image.thumbnail(size)的行为是将图片按比例缩放到能放进size指定的矩形边界内的最大尺寸若原图本身小于边界则不会放大输出图片的宽高比与原图一致。因此即使你在命令行输入100, 100结果也未必是严格的正方形而是最长边不超过 100 像素的等比缩小图。若需要精确尺寸则应改用Image.resize((w, h))仓库中 Reduce_image_file_size/reduce_image_size.py 展示了基于 openCV 的固定比例缩放写法可供对照参考。Image.ANTIALIAS 的版本兼容问题源码使用了im.thumbnail(size, Image.ANTIALIAS)L11。需要说明的是Image.ANTIALIAS是 Pillow 早期的重采样常量在较新的 Pillow 版本中9.1.0 起标记弃用10.0.0 起移除Image.ANTIALIAS已被Image.Resampling.LANCZOS或简写Image.LANCZOS取代本文项目的requirements.txt固定了极旧的PIL1.1.6在该环境下Image.ANTIALIAS仍可用若你在新版本 Pillow 环境中运行建议将对应行改为im.thumbnail(size, Image.LANCZOS)即可获得同样的高质量重采样效果。这是从源码与依赖声明中可以明确推断出的兼容性要点实际运行前请根据本地 Pillow 版本选择合适写法。运行流程与结果验证完整的运行步骤准备一个包含若干图片如 JPG/PNG的目录例如./photos安装依赖pip install tqdm Pillow执行脚本python projects/Terminal_progress_bar_with_images_resizing/progress_bar_ with_images_resizing.py按提示输入图片目录路径如./photos再输入目标尺寸如100, 100注意以英文逗号分隔终端中即可看到形如Resizing Images: 45%|████▌ | 9/20 [00:0000:01, 8.92it/s]的动态进度条实时显示处理进度与速率结束后输入目录下会出现resize/子目录其中存放所有缩放后的*.jpg文件终端打印Resizing Completed!。已知边界与改进方向结合源码行为可以指出以下从代码结构推断出的注意点供使用与二次开发时参考输入目录包含非图片文件时会报错os.listdir返回目录下全部条目Resize_image会对每个条目调用Image.open。若目录中混有文本、压缩包等非图片文件会触发异常并被捕获打印Error: ... to file任务本身不会中断但输出目录中会缺少对应文件重复运行会递归处理旧输出第二次运行时resize目录已存在会被os.listdir一并列出并尝试当作图片打开会报错被捕获。可将Resize_image中的文件过滤条件增强为仅处理图片扩展名如.jpg/.png/.jpeg或在列表时跳过resize目录输出统一为 JPG 格式im.save(resize/ str(image) .jpg)固定输出 JPG透明 PNG 的 Alpha 通道会丢失。若需保留透明或输出原格式可调整保存逻辑相对路径依赖脚本通过os.chdir(path)切换工作目录输出目录resize相对该目录创建建议在调用前确认输入路径正确避免误切换工作目录影响其他文件操作。总体来说这个迷你项目以最小的代码量清晰演示了tqdm 进度条 Pillow 批量图片处理的组合范式既可当作 tqdm 的入门示例学习也可在此基础上扩展为批量格式转换、压缩、加水印等实用工具——仓库中 Convert_JPEG_to_PNG 等项目即展示了 Pillow 在图片转换场景下的更多用法。赞分享示例工程【免费下载链接】python-mini-projectsA collection of simple python mini projects to enhance your python skills项目地址https://gitcode.com/gh_mirrors/py/python-mini-projects点击查看免费下载相关推荐基于 Pillow 的 JPEG 转 PNG 图片转换python-mini-projects 终端脚本与 Tkinter 图形界面实战基于 Pillow 的 JPEG 转 PNG 图片转换python mini projects 终端脚本与 Tkinter 图形界面实战 本篇技术指南以 pr示例工程Python多媒体处理实战使用Pillow实现高级图片压缩与批量处理Python多媒体处理实战使用Pillow实现高级图片压缩与批量处理 引言 在当今数字内容爆炸式增长的时代图片处理已成为开发者必备的技能之一。本文将深入探讨示例工程教程python-mini-projects 实战基于 Selenium BeautifulSoup 的网站图片批量下载器python mini projects 实战基于 Selenium BeautifulSoup 的网站图片批量下载器 导读 本文以 python min示例工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Devin 的端到端项目,Key 改走 TaoToken 会更快吗?

Devin 的端到端项目,Key 改走 TaoToken 会更快吗?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 0:34:18 阅读更多 →
CODEV中文手册导读:从命令逻辑到光学设计实战的高效路径

CODEV中文手册导读:从命令逻辑到光学设计实战的高效路径

简介:CODEV中文使用手册是一份面向光学系统设计与分析人员的入门级指南,帮助读者快速掌握CODEV软件的核心操作与设计思路。资源为单个doc文档,大小200KB,内容紧凑,适合作为案头速查或系统学习材料。目前已有1439人学习…

2026/9/21 0:34:18 阅读更多 →
Continue 指向 TaoToken:补全模型换成 DeepSeek V4.1 Flash

Continue 指向 TaoToken:补全模型换成 DeepSeek V4.1 Flash

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 0:34:18 阅读更多 →

最新新闻

OpenClaw 升级完跑 Agent:Key 用 TaoToken

OpenClaw 升级完跑 Agent:Key 用 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 1:16:42 阅读更多 →
MATPOWER 8.0b潮流计算实战:用case9轻松搞定电力系统分析

MATPOWER 8.0b潮流计算实战:用case9轻松搞定电力系统分析

直接聊干货。电力系统这个领域,不管是本科毕业设计、研究生课题,还是刚入行做电网分析的工程师,潮流计算基本是绕不开的第一道门槛。而MATLAB搭配MATPOWER,是这个圈子里最省力气的组合,没有之一。今天我就用MATPOWER 8…

2026/9/21 1:16:42 阅读更多 →
基于STM32的智能小车设计与实现:PWM调速、循迹避障与灭火功能详解

基于STM32的智能小车设计与实现:PWM调速、循迹避障与灭火功能详解

简介:这是一份围绕STM32F103C8T6微控制器的智能小车完整设计方案,面向单片机初学者、嵌入式开发人员以及正在进行课程设计或毕业设计的学生。内容从硬件电路搭建到软件代码实现,系统讲解了PWM调速、红外循迹、红外避障、障碍物跟随、超声波避…

2026/9/21 1:16:42 阅读更多 →
LibreChat开源对话平台:支持多模型、Agents与MCP协议的企业级AI工作台

LibreChat开源对话平台:支持多模型、Agents与MCP协议的企业级AI工作台

1. LibreChat 是什么?一个真正能落地的开源对话平台LibreChat 不是另一个“玩具级”聊天界面,也不是套着 Web UI 外壳的简单 API 转发器。它是一个从第一天起就为真实工作流、多模型协同、可扩展代理架构(Agents)和标准化工具交互…

2026/9/21 1:16:42 阅读更多 →
2025硬件面试真题精讲:从三极管到DC-DC与信号完整性

2025硬件面试真题精讲:从三极管到DC-DC与信号完整性

简介:覆盖DSP、嵌入式系统、电子线路、通讯、微电子、半导体等方向的硬件工程师面试题集,以文档问答形式整理数字电路与模拟电路的高频考点,适合准备求职笔试的应届生、转岗工程师及需要系统复习的硬件从业者。内容涵盖Setup/Hold时间分析、竞…

2026/9/21 1:16:42 阅读更多 →
有源功率因数校正APFC实战:从原理到500W电路设计全解析

有源功率因数校正APFC实战:从原理到500W电路设计全解析

简介:面向电力电子与开关电源设计人员,这份doc文档系统讲述有源功率因数校正(APFC)电路的设计要点,针对整流装置导致的输入电流畸变与谐波污染问题,给出了完整解决方案。资源为单个doc文件,压缩…

2026/9/21 1:15:42 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →