我用Python做了个毕业合照的照片墙~

毕业啦!用Python做个照片墙叭!

此文章参考了以下三位老师的博文:

知乎博主@又不是非我不可
https://zhuanlan.zhihu.com/p/524801951

CSDN博主@Mrji1995
https://blog.csdn.net/weixin_49148532/article/details/124292394

CSDN博主@道纪书生
https://blog.csdn.net/qq_40682833/article/details/123953980

两位的文章对我帮助非常大,特此表达感谢!

又是一年毕业季呀,恭喜各位顺利拿到学位!

“自2018年初秋进入光电工程学院学习以来,一转眼便已经过去了四年时间。这期间过得并不轻松,经历了许多苦楚与坎坷。此刻回头看,发现自己将四年的时光献给了一项事业,我诚挚且强烈地认为,它是无比正确而充满光明的。值此提前毕业、奔赴远方,投身建设祖国之际,向四年里曾帮助、支持过我、予我以体贴与暖意的老师和同学们致以诚挚的敬意与由衷的感谢。”

我用Python做了个毕业合照的照片墙~_第1张图片
Ps:部分内容涉及自娱自乐,请勿当真 : )

临别之际,我和很多很多老师、同学拍了合照,以至于,当我想发朋友圈来纪念我们对友谊时,竟一时词穷,想不出该说什么了。微信发朋友圈最多发9张,那么我便想,不如做个照片墙?一下全发了就好了。

事不宜迟,撸起袖子,开始吧!

步骤一: 将图片重命名编号

这一步骤需要用到glob和os库,Os库是Python标准库,不需要另外安装。因此安装好glob库即可。
cmd下输入以下指令即可。

pip install glob

首先导入上述模块

import glob
import os 

而后,开始构思实现功能。具体思路是:
1.读取某文件夹内所有文件;
2.将其中图片文件重命名;

首先用一个list,列出文件夹内所有的图片文件

file_list = glob.glob(f"./{
     filepath}/*.JPG")
# 此处*.JPG,指读取该文件夹内所有JPG文件
# 如果该文件夹内所有文件都是图片文件,但不是所有都是JPG,则可以直接用*.*

其次还要知道总共有多少张照片

list_len = [a for a in range(0, len(file_list))]# 获取图片总数量

最后,给所有文件重命名

i = 0
print('REPO:  Renaming...')
for num in list_len:
    os.rename(file_list[num], f'./{
     filepath}/{
     i}.jpg')
    i += 1

当然,考虑到模块化设及,在具体操作中,我将这个功能封装成一个函数,并且返回了一个图片总数(后面要用)

def Rename(filepath):
    file_list = glob.glob(f"./{
     filepath}/*.*")
    list_len = [a for a in range(0, len(file_list))]

    i = 0
    for num in list_len:
        os.rename(file_list[num], f'./{
     filepath}/{
     i}.jpg')
        i += 1


    return len(file_list)

不过呢,在实际应用中,如果每次都在程序里把地址写出来就非常麻烦,每次都要改,因此可以用一个简单的GUI来解决这个问题。
这样的话就需要用到PySimpleGUI模块,首先还是要先安装好:

pip install PySimpleGUI

引用模块

import PySimpleGUI

用法非常简单

dir_path = popup_get_folder('Select Folder')

if not dir_path:
    popup('cancel', 'no folder selected')
    raise SystemExit('cancelling: no folder selected')
else:
    popup

你可能感兴趣的:(python,PIL,Image,python)