1. 程式人生 > >Python自定義地合併拼接圖片

Python自定義地合併拼接圖片

筆者在工作的時候,往往視覺化很多演算法結果,但是做分析的時候就有點頭疼,超級多圖,可能要兩兩比較或者几几比較,一張張翻圖並不是最優的方式。根據所需拼接圖片,然後再分析是一個很高效的事兒。於是基於Python3,就有了如下的程式碼,可以加一層GUI程式碼封裝成.exe應用,但是對於我來說就沒有必要了。大家可以隨意嘗試。

# -*- coding:utf-8 -*-

"""
圖片任意拼接,引數化形式程式碼
使用指南:
    1. 修改常量的數值,可以實現不同樣子的圖片拼接,例如拼接成5*20,或者100*200的大圖,每張小圖也可以控制大小
    2. 可以自定義函式讓圖片不僅僅是全部拼接成一張圖,也可以自定義哪些圖進行拼接。
"""
import PIL.Image as Image import os IMAGES_PATH = "play/" # 圖片集地址 IMAGES_FORMAT = ['.jpg', '.JPG'] # 圖片格式 IMAGE_SIZE = 1080 # 圖片大小 IMAGE_ROW = 10 # 圖片間隔,也就是合併成一張圖後,一共有幾行 IMAGE_COLUMN = 5 # 圖片間隔,也就是合併成一張圖後,一共有幾列 IMAGE_SAVE_PATH = 'toImage_0.jpg' # 圖片轉換後的地址 # 獲取圖片集地址下的所有圖片名稱 image_names = [name for
name in os.listdir(IMAGES_PATH) for item in IMAGES_FORMAT if os.path.splitext(name)[1] == item] # 簡單的對於引數的設定和實際圖片集的大小進行數量判斷 if len(image_names) != IMAGE_ROW * IMAGE_COLUMN: raise ValueError("合成圖片的引數和要求的數量不能匹配!") # 影象拼接 def image_compose(): # 開啟一個新的圖 to_image = Image.new(
'RGB', (IMAGE_COLUMN * IMAGE_SIZE, IMAGE_ROW * IMAGE_SIZE)) # 迴圈遍歷,把每張圖按順序貼上到對應位置上 for y in range(1, IMAGE_ROW + 1): for x in range(1, IMAGE_COLUMN + 1): from_image = Image.open(IMAGES_PATH + image_names[IMAGE_COLUMN * (y - 1) + x - 1]).resize( (IMAGE_SIZE, IMAGE_SIZE), Image.ANTIALIAS) to_image.paste(from_image, ((x - 1) * IMAGE_SIZE, (y - 1) * IMAGE_SIZE)) # 儲存新圖 return to_image.save(IMAGE_SAVE_PATH) image_compose()

結果是(筆者參加2018ARM人工智慧開發者全球峰會時的所有參會照片記錄):在這裡插入圖片描述