批量收集照片并按规则命名

前言

最近学校下发工作需要收集班上同学的截图文件并按自己名字命名图片,然后收集好后打包发给学校。总觉得这样下发通知让大家截图后命名再上传至群相册十分麻烦,便想找其他解决方法,使得大家都很便利

解决方法

1 收集图片

  • qq带的腾讯文档里可以创建带有收集图片的表,设置好后发给同学们进行填写在这里插入图片描述
    最后收集后的结果可以生成excel表在这里插入图片描述
    以往的腾讯文档只能导出表格,现在的腾讯文档可以导出文件和附件(附件也就是我们收集的图片),但是附件的命名是按填表的时间来命名的,不符合我们的需求,所以这里我还是选择导出excel文件(xlsx格式)

2. 修改excel表格

  • 当我们获得一个含有命名规则和图片链接地址的excel表后,后续的事情就很好做了,主要思路就是利用代码将excel表中的链接获取到,并下载至本地,且以excel表中规则进行命名。
  • 但是在上图中,导出的excel文件中的地址是蓝色的 相当于超链接,这样代码是获取不到其链接地址的,我们所需要的是能直接在浏览器打开的地址,例如https://www.baidu.com/,所以第一步需要将蓝色的超链接转为URL地址
    • 打开excel,在选项->自定义功能区中选择打开开发工具在这里插入图片描述
      然后在导航栏点开开发工具的编辑器,然后新建模块后,将下列代码进行复制并保存
Function GetAdrs(Rng)

    Application.Volatile True

    With Rng.Hyperlinks(1)

        GetAdrs = IIf(.Address = "", .SubAddress, .Address)

    End With

End Function

在这里插入图片描述
然后在excel单元格中编写函数公式
在这里插入图片描述
然后就可以获取到URL地址了,如图。
建议此时获得地址后进行复制粘贴为文本,因为后续尝试使用代码进行获取单元格内容,只能获取函数公式,而不是公式之后的结果

3. 代码根据连接进行图片下载

  • 因为使用了宏,所以excel进行保存时只能选择xlsm格式
  • 保存之后,使用python代码进行下载
import openpyxl
import requests

wb = openpyxl.load_workbook('456.xlsm')
temp = wb.worksheets[0]

# 把下载地址发送给requests模块
for i in range(2):
    f = requests.get(temp['E{}'.format(i+2)].value)
    # 下载文件
    with open("图片收集/{}.jpg".format(temp['C{}'.format(i+2)].value), "wb") as code:
        code.write(f.content)

上述代码中的for语句 需要循环多少次是看有多少同学上交的图片,这里测试文件只有两行,所以是2
123

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>