批量重命名_批量照片重命名及调整像素大小

c8e21034b8d31cb70e7a4f64b747925e.png

最近给ehr系统导入员工照片,彷佛时间回到了3年前,翻出以前写的python脚本,一键操作,还是那么的好用~

为什么要给照片重命名

往ehr系统导入照片时,一般要求员工照片名为系统内“员工编码”,这样才能做到照片和员工的一一对应。“员工编码”一般是实施ehr系统时,重新规范编码的。但曾经收集的员工照片,可能是以工号、身份证号,或者“部门+姓名”的方式命名。

如果只有几十人需要导入照片,一张张重命名就可以了。现实情况是,实施大型ehr系统的公司,员工人数动辄几百人,你绝对不想干这重复、枯燥且容易出错的活。

需要新建一个excel表,表内是“照片名”和“员工编码”的对照关系;把所有照片放在一个文件夹下。下面是批量照片重命名的python代码:

# coding=utf-8
# author: echo
# date: 2020/03/21

# openpyxl 需要安装,在命令行中输入:pip install openxyxl
# openpyxl 只能处理扩展名是.xlsx的文件
import openpyxl, os, shutil

# 获取员工代码信息表
wb = openpyxl.load_workbook('D:index.xlsx')  # 请根据员工代码信息表实际所在目录修改
sheet = wb.get_sheet_by_name('Sheet1')
changedir = {}
maxrow = sheet.max_row

# 把员工代码信息转换成字典
for row in range(2, maxrow + 1):
    xingming = sheet['A' + str(row)].value
    index    = sheet['B' + str(row)].value
    changedir[xingming] = index

# 通过字典对照片进行重命名
MyPath = 'D:zhaopian'  # 请根据照片实际所在目录修改
for i in os.listdir(MyPath):
    olddir = os.path.abspath(os.path.join(MyPath, i))
    for c in changedir.keys():
        if c in str(i):  # if (c + '.jpg') == str(i):
           newdir = os.path.abspath(os.path.join(MyPath, changedir[c] + '.jpg'))
           shutil.move(olddir, newdir) # 进行重命名
           break # 重命名后,文件名i已不存在,必须中断此循环,否则报错
        else:
            pass

# 重命名完成后, 输出下面这句话
print('Done! All photos have been renamed')

为什么调整照片像素大小

ehr系统内显示的照片有像素要求,照片太大,会放不开,可能只显示一部分,必须调整到合适大小才可以。当然你也可以用批量调整照片大小的软件,或者直接放开照片修改权限,让员工自己上传近期免冠照片。

下面是批量修改照片大小的python代码,这是直接缩放照片,同时删除了原图,请先把照片备份。

# coding=utf-8
# author: echo
# date: 2020/03/21

# pillow 需要安装,在命令行中输入:pip install pillow
import os
from PIL import Image

# 定义2寸免冠照片的像素大小
newsize_width = 413
newsize_height = 626

# 请根据照片实际所在目录修改'D:zhaopian'
MyPath = 'D:zhaopian'

# 修改照片尺寸
for i in os.listdir(MyPath):
    picturedir = os.path.abspath(os.path.join(MyPath, i))
    picture = Image.open(picturedir)
    oldsize_width, oldsize_height = picture.size

    # 首先判断照片尺寸,不修改尺寸还不到2寸的照片
    if oldsize_width > newsize_width and oldsize_height > newsize_height:
        picture = picture.resize((newsize_width, newsize_height))
        picture.save(os.path.join(MyPath, i))
    else:
        pass

# 修改尺寸完成后, 输出下面这句话
print('Done! All photos have been resized')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值