python實現(xiàn)多張圖片拼接成大圖
本文實例為大家分享了python實現(xiàn)多張圖片拼接成大圖的具體代碼,供大家參考,具體內(nèi)容如下
上次爬取了馬蜂窩的游記圖片,并解決了PIL模塊的導(dǎo)入問題,現(xiàn)在直奔主題吧:
import PIL.Image as Image import os IMAGES_PATH = 'D:\Mafengwo\photo\五月坦桑的暖風(fēng),非洲原野的呼喚\\' # 圖片集地址 IMAGES_FORMAT = ['.jpg', '.JPG'] # 圖片格式 IMAGE_SIZE = 256 # 每張小圖片的大小 IMAGE_ROW = 5 # 圖片間隔,也就是合并成一張圖后,一共有幾行 IMAGE_COLUMN = 4 # 圖片間隔,也就是合并成一張圖后,一共有幾列 IMAGE_SAVE_PATH = 'final.jpg' # 圖片轉(zhuǎn)換后的地址 # 獲取圖片集地址下的所有圖片名稱 image_names = [name for name in os.listdir(IMAGES_PATH) for item in IMAGES_FORMAT if os.path.splitext(name)[1] == item] # 簡單的對于參數(shù)的設(shè)定和實際圖片集的大小進行數(shù)量判斷 if len(image_names) != IMAGE_ROW * IMAGE_COLUMN: raise ValueError("合成圖片的參數(shù)和要求的數(shù)量不能匹配!") # 定義圖像拼接函數(shù) def image_compose(): to_image = Image.new('RGB', (IMAGE_COLUMN * IMAGE_SIZE, IMAGE_ROW * IMAGE_SIZE)) #創(chuàng)建一個新圖 # 循環(huán)遍歷,把每張圖片按順序粘貼到對應(yīng)位置上 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() #調(diào)用函數(shù)
前邊設(shè)置了很多變量,都很直觀,然后時獲取圖片的名稱以及對需要拼接圖片的數(shù)量進行檢查,比如你要拼接5*5的大圖,那就需要25張圖片,最后是我們的主函數(shù),依次遍歷,主要還是利用了Image模塊的強大功能,我們需要做的就是無縫對接。
效果如下:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實現(xiàn)將橫表和縱表任意轉(zhuǎn)換的兩種方法
在日常做數(shù)據(jù)分析,接收到最多的表格是縱表,每個字段變量都有很長數(shù)據(jù)的長表,我們稱之為縱向數(shù)據(jù),但是,有時候,我們也會遇到橫表,對于橫向數(shù)據(jù),我們會數(shù)據(jù)轉(zhuǎn)化,將其轉(zhuǎn)化為縱向數(shù)據(jù),感興趣的同學(xué)跟著小編一起來學(xué)習(xí)吧2023-12-12Django零基礎(chǔ)入門之路由path和re_path詳解
這篇文章主要介紹了Django零基礎(chǔ)入門之路由path和re_path,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09Python 讀取有公式cell的結(jié)果內(nèi)容實例方法
在本篇文章里小編給大家整理的是關(guān)于Python 如何讀取有公式cell的結(jié)果內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-02-02