网站首页 > 教程文章 正文
现在我们每天都在产出大量照片,天长地久我们电脑上的照片越来越多越来越乱。而使用专业的图片库软件又过于臃肿,今天我们就介绍下面3个python脚本,能大大提高你的照片整理效率,减少你大量的重复性操作时间,还可以嵌入到自动化的工作流,实现更加复杂的操作。
批量图片处理(调整尺寸/数据压缩/添加水印)
我们在分享图片的时候很多时候会有图片的尺寸和大小要求,同时有时候在网上分享照片时候,我们还希望添加上水印,防止图片被他人盗用。
from PIL import Image
import os
input_folder = "./photos/" #原图路径
output_folder = "./outputs/" #保存结果路径
for filename in os.listdir(input_folder):
if filename.endswith((".jpg", ".png")):
img = Image.open(f"{input_folder}/{filename}")
# 缩放到宽度2000px,保持比例
img.thumbnail((2000, 2000))
# 转存为webp格式(节省50%存储空间)
img.save(f"{output_folder}/{filename.split('.')[0]}.webp", "WEBP")
特定图片搜索(基于EXIF信息)
EXIF信息是是嵌入在照片中的隐形数据标签,自动记录拍摄时间、地理位置、设备型号及相机参数(如光圈/快门/ISO)等拍摄现场信息。我们可以通过它来进行照片检索。
iimport os,exifread
dir_path="./photos/" #替换成自己的图片库路径
for root, _, files in os.walk(dir_path):
for file in files:
path = os.path.join(root, file)
with open(path, "rb") as f:
tags = exifread.process_file(f)
# 可以替换成其他搜索条件
if "NIKON" in str(tags.get('Image Model', '')):
print("尼康拍摄:",path)
重复照片识别(基于文件哈希码)
有时候我们会有大量的照片重复备份,造成我们的硬盘空间浪费,快速的去除重复的照片,帮助自己建立数字底片库,对于节省硬盘空间有巨大帮助。
import hashlib
def get_file_hash(filepath):
"""生成文件唯一指纹"""
with open(filepath, "rb") as f:
return hashlib.md5(f.read()).hexdigest()
photo_dict = {}
dir_path=".\photos\" #替换成自己的图片库路径
for root, _, files in os.walk(dir_path):
for file in files:
path = os.path.join(root, file)
file_hash = get_file_hash(path)
if file_hash in photo_dict:
print(f"发现重复文件:{path} 与 {photo_dict[file_hash]}")
else:
photo_dict[file_hash] = path
总结
上述脚本不需要编程基础,只需要安装好python,在安装相应以赖库,最后修改下文件路径就可以直接运行,十分的轻量化。希望上面这些脚本能对你有所帮助,如需要源码文件,欢迎评论区留言,后续还有提供更多高级的实用技巧,欢迎关注
猜你喜欢
- 2025-04-11 手把手教你开发智能备份神器,小白也能30分钟搞定!
- 2025-04-11 画像笔记23- 作业流程调度(2)(作业流程图怎么画)
- 2025-04-11 Python接口自动化之常见用例读取方法介绍
- 2025-04-11 AI办公自动化:批量合并多个Excel表格的数据并汇总
- 2025-04-11 pc端微信用户图片DAT格式解码为图片
- 2025-04-11 Python自动化脚本应用与示例(pythonui自动化脚本)
- 2025-04-11 21-02-Python-文件操作下(python文件操作方法)
- 2025-04-11 Python定时任务,三步实现自动化(python定时任务,三步实现自动化效果)
- 2025-04-11 自动下载邮箱里未阅读的发票,并用邮件标题里指定的几个字命名
- 2025-04-11 Python语言的12个基础知识点小结(python 语言基础)
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)