最近做数据预处时,需要将提取Excel中的图像,为了保证提取出来的图像质量,需要先将'.xlsx文件都重命名为'.zip'文件,在该zip文件中'xl\media'路径下就存放着所需要的图像文件,如下图所示。

【Python】批量提取Excel里的图像

重命名的代码如下:

import os

path = r'C:\workspace\data'
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

之后要做的就是将.zip文件里的图像读取出来并保存,直接看如下代码

import zipfile
import os
from PIL import Image
import numpy as np

number = 0
craterDir = "data/"  # 存放zip文件的文件夹路径
saveDir = "images/"  # 存放图片的路径

list_dir = os.listdir(craterDir) # 获取所有的zip文件名

for zip_name in list_dir:
    print(zip_name)
    # 默认模式r,读
    azip = zipfile.ZipFile(craterDir + zip_name)
    # 返回所有文件夹和文件
    namelist = (azip.namelist())

    for idx in range(0,len(namelist)):
        if namelist[idx][:9] == 'xl/media/':#图片是在这个路径下
            img_name = saveDir + str(number)+'.jpg'
            f = azip.open(namelist[idx])
            img = Image.open(f)
            img = img.convert("RGB")
            img.save(img_name,"JPEG")
            number += 1

 

 

参考资料:

http://www.360doc.com/content/18/0924/09/30153390_789233158.shtml

 

相关文章: