- 内容提要
- 作者简介
- 技术评审者简介
- 致谢
- 译者序 会编程的人不一样
- 前言
- 本书的读者对象
- 编码规范
- 什么是编程
- 本书简介
- 下载和安装 Python
- 启动 IDLE
- 如何寻求帮助
- 聪明地提出编程问题
- 小结
- 第一部分 Python 编程基础
- 第1章 Python 基础
- 第2章 控制流
- 第3章 函数
- 第4章 列表
- 第5章 字典和结构化数据
- 第6章 字符串操作
- 第二部分 自动化任务
- 第7章 模式匹配与正则表达式
- 第8章 读写文件
- 第9章 组织文件
- 第10章 调试
- 第11章 从 Web 抓取信息
- 第12章 处理 Excel 电子表格
- 第13章 处理 PDF 和 Word 文档
- 第14章 处理 CSV 文件和 JSON 数据
- 第15章 保持时间、计划任务和启动程序
- 第16章 发送电子邮件和短信
- 第17章 操作图像
- 第18章 用 GUI 自动化控制键盘和鼠标
- 附录A 安装第三方模块
- 附录B 运行程序
- 附录C 习题答案
17.7 实践项目
作为实践,编程完成以下任务。
17.7.1 扩展和修正本章项目的程序
本章的resizeAndAddLogo.py程序使用PNG和JPEG文件,但Pillow还支持许多格式,不仅仅是这两个。扩展resizeAndAddLogo.py,让它也能处理GIF和BMP图像。
另一个小问题是,只有文件扩展名小写时,程序才修改PNG和JPEG文件。例如,它会处理zophie.png,但不处理zophie.PNG。修改代码,让文件扩展名检查不区分大小写。
最后,添加到右下角的徽标本来只是一个小标记,但如果该图像与徽标本身差不多大,结果将类似于图17-16。修改resizeAndAddLogo.py,使得图像必须至少是徽标的两倍的宽度和高度,然后才粘贴徽标。否则,它应该跳过添加徽标。
图17-16 如果图像不比徽标大很多,结果很难看。
17.7.2 在硬盘上识别照片文件夹
我有一个坏习惯,从数码相机将文件传输到硬盘的临时文件夹后,会忘记这些文件夹。编程扫描整个硬盘,找到这些遗忘的“照片文件夹”,就太好了。
编写一个程序,遍历硬盘上的每个文件夹,找到可能的照片文件夹。当然,首先你必须定义什么是“照片文件夹”。假定就是超过半数文件是照片的任何文件夹。你如何定义什么文件是照片?
首先,照片文件必须具有文件扩展名.png或.jpg。此外,照片是很大的图像。照片文件的宽度和高度都必须大于500像素。这是安全的假定,因为大多数数码相机照片,宽度和高度都是几千像素。
作为提示,下面是这个程序的粗略框架:
#! python3 # Import modules and write comments to describe this program. for foldername, subfolders, filenames in os.walk('C:\\'): numPhotoFiles = 0 numNonPhotoFiles = 0 for filename in filenames: # Check if file extension isn't .png or .jpg. if TODO: numNonPhotoFiles += 1 continue # skip to next filename # Open image file using Pillow. # Check if width & height are larger than 500. if TODO: # Image is large enough to be considered a photo. numPhotoFiles += 1 else: # Image is too small to be a photo. numNonPhotoFiles += 1 # If more than half of files were photos, # print the absolute path of the folder. if TODO: print(TODO)
程序运行时,它应该在屏幕上打印所有照片文件夹的绝对路径。
17.7.3 定制的座位卡
第13章包含了一个实践项目,利用纯文本文件的客人名单,创建定制的邀请函。作为附加项目,请使用 Pillow 模块,为客人创建定制的座位卡图像。从http://nostarch. com/automatestuff/下载资源文件guests.txt,对于其中列出的客人,生成带有客人名字和一些鲜花装饰的图像文件。在http://nostarch.com/automatestuff/的资源中,包含一个版权为公共领域的鲜花图像。
为了确保每个座位卡大小相同,在图像的边缘添加一个黑色的矩形,这样在图像打印出来时,可以沿线剪裁。Pillow生成的PNG文件被设置为每英寸72个像素,因此4×5英寸的卡片需要288×360像素的图像。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论