1. 程式人生 > 其它 >python影象資料讀取利器-imageio庫的使用

python影象資料讀取利器-imageio庫的使用

極簡化的影象資料讀取庫,官方文件

  • 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 + '生成成功!!!')