python影象資料讀取利器-imageio庫的使用
阿新 • • 發佈:2021-06-17
極簡化的影象資料讀取庫,官方文件
-
Imageio 是用純 Python 編寫的,所以安裝很容易:pip install imageio
-
Imageio 依賴於 Numpy 和 Pillow
""" 將GIF影象儲存為PNG圖片 """ import imageio im = imageio.get_reader(r'C:\Users\admin\Pictures\Saved Pictures\GIF.gif') num = 1 for frame in im: imageio.imsave('./image/%s.png'%num,frame,'PNG') num += 1 print("這張GIF圖片總共由:%s張 PNG圖片組成!!!"%num)
run程式碼之後,檢視儲存路徑的資料夾:
""" 將多張圖片按照需要進行gif動圖製作 """ image_list = [] # 儲存圖片的路徑 file_name = r'D:\learn\project\new_image\image' # 提取出該資料夾下所有檔名稱,並將其儲存為列表格式 for image_name in os.listdir(file_name): image_list.append(image_name) """ 此時列印image_list: ['1.png', '10.png', '11.png', '12.png', '13.png', '14.png', '15.png', '16.png', '17.png', '18.png', '19.png', '2.png', '20.png', '21.png', '22.png', '23.png', '24.png', '25.png', '26.png', '27.png', '28.png', '29.png', '3.png', '30.png', '31.png', '32.png', '33.png', '34.png', '35.png', '36.png', '37.png', '38.png', '39.png', '4.png', '40.png', '41.png', '42.png', '43.png', '44.png', '45.png', '46.png', '47.png', '48.png', '49.png', '5.png', '50.png', '51.png', '52.png', '53.png', '54.png', '55.png', '56.png', '57.png', '58.png', '6.png', '7.png', '8.png', '9.png', 'image_gif.gif'] # 此時讀取到的檔名順序是完全混亂的,按照需求需要將檔案進行排序,而 sort()採取了按字元鍵值排序的手段 # lambda x:int(x.split('.')[0]) 對每個檔名將句號前的字串轉化為數字,然後以數字為key來進行排序 """ image_list.sort(key=lambda x: int(x.split('.')[0])) # 設定生成GIF圖片的檔名 gif_name = './image/image_gif.gif' """ 讀取 儲存檔名的列表,並篩選出PNG格式的檔案,拼接路徑後再次儲存在列表中 前面單獨儲存一個列表是為了排序的時候方便 # imageio.imread() 從指定的檔案讀取影象。返回一個NUMPY陣列,該陣列帶有元資料的元屬性。 """ frames = [] for im in image_list: if im.endswith('.png'): im = os.path.join(file_name, im) frames.append(imageio.imread(im)) else: print("該檔案不是需要的PNG圖片:"+ im) # duration,設定切換間隔,單位:秒 imageio.mimsave(gif_name,frames,'GIF',duration = 0.2) print(gif_name + '生成成功!!!')