爬取pdf中图片,并按照身份证号与excel中姓名匹配,并压缩存放。
# coding=gbk
import os
import os
import zipfile
import os
from PIL import Image
import numpy as np
path = r'E:\excel' #存放姓名的excel所在文件夹位置
count = 1
for file in os.listdir(path):
new_file = file.replace(".xlsx", ".zip")
os.rename(os.path.join(path, file), os.path.join(path, new_file))
count += 1
print('总共有' + str(count) + '个文件夹')
number = 0
craterDir = "E:excel/" # 存放zip文件的文件夹路径
saveDir = "E:/pic/"#最后图片存放路径
list_dir = os.listdir(craterDir)
for i in range(len(list_dir)):
if 'zip' not in list_dir[i]:
list_dir[i] = ''
while '' in list_dir:
list_dir.remove('')
for zip_name in list_dir:
print(zip_name)
azip = zipfile.ZipFile(craterDir + zip_name)
namelist = (azip.namelist())
for idx in range(0, len(namelist)):
if namelist[idx][:9] == 'xl/media/':# 图片是在这个路径下
name_file = zip_name.strip().split('.')[0]
save_path = saveDir+name_file+'/'
if not os.path.exists(save_path):
os.makedirs(save_path)
img_name = save_path + str(number) + '.jpg'
f = azip.open(namelist[idx])
img = Image.open(f)
img = img.convert("RGB")
img.save(img_name, "JPEG")
number += 1
#图片压缩批处理
import os
def compressImage(srcPath,dstPath):
for filename in os.listdir(srcPath):
#如果不存在目的目录则创建一个,保持层级结构
if not os.path.exists(dstPath):
os.makedirs(dstPath)
#拼接完整的文件或文件夹路径
srcFile=os.path.join(srcPath,filename)
dstFile=os.path.join(dstPath,filename)
print(srcFile)
print (dstFile)
#如果是文件就处理
if os.path.isfile(srcFile):
#打开原图片缩小后保存,可以用if srcFile.endswith(".jpg")或者split,splitext等函数等针对特定文件压缩
sImg=Image.open(srcFile)
w,h=sImg.size
print( w,h)
dImg=sImg.resize((w//6,h//6),Image.ANTIALIAS) #设置压缩尺寸和选项,注意尺寸要用括号
dImg.save(dstFile) #也可以用srcFile原路径保存,或者更改后缀保存,save这个函数后面可以加压缩编码选项JPEG之类的
print( dstFile+" compressed succeeded")
#如果是文件夹就递归
if os.path.isdir(srcFile):
compressImage(srcFile,dstFile)
compressImage(srcPath,dstPath) #分别为写入图片位置和存储图片位置
程序员交流可加群783273092