【Python】批量提取Excel裡的影像

通訊程式猿發表於2019-02-26

最近做資料預處時,需要將提取Excel中的影像,為了保證提取出來的影像質量,需要先將'.xlsx檔案都重新命名為'.zip'檔案,在該zip檔案中'xl\media'路徑下就存放著所需要的影像檔案,如下圖所示。

重新命名的程式碼如下:

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

 

相關文章