利用Python制作心型照片墻效果
每到一年一度的520等節(jié)假日,作為一個(gè)地地道道的程序猿心里慌得一批。除了吃飯買禮物看電影好像就沒有更多的想法了,于是想想將女友從以前到現(xiàn)在的所有照片整理了一下準(zhǔn)備制作一個(gè)前所未有的照片墻。
當(dāng)然,這里我使用的照片是從百度上面拿下來的,私人照片不能公開,哈哈~

沒有女朋友的也可以試試,畢竟萬一哪天就有了呢!
話不多說,進(jìn)入正題吧,先將需要的非標(biāo)準(zhǔn)庫(kù)梳理一下,只有一個(gè)PIL圖像處理庫(kù),另外一個(gè)是os的標(biāo)準(zhǔn)庫(kù)是用來操作文件的。
from PIL import Image import os
然后,定義一個(gè)二維數(shù)組,這個(gè)二維數(shù)組是由0和1組成的,觀察一下0的位置聯(lián)合起來就是一個(gè)心的形狀,之后我們需要按照這個(gè)規(guī)則將需要的照片放置上去就形成了一個(gè)心形的照片墻。
location = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]
需要注意的是0的數(shù)量其實(shí)就是照片的數(shù)量,所以盡可能的0的數(shù)量是需要小于等于照片的數(shù)量,可以根據(jù)自己的實(shí)際情況進(jìn)行微調(diào)一下也是OK的。
由于我們自己的照片每張的大小可能都是不統(tǒng)一的,所以必須指定一下每張圖片放入后的大小。
img_w = img_h = 192 # 寬高都設(shè)置為192像素
# 計(jì)算location二維數(shù)組的行的個(gè)數(shù)、列的個(gè)數(shù)
rows = len(location)
columns = len(location[0])
# 使用行、列的個(gè)數(shù)以及每張圖片的像素計(jì)算出目標(biāo)畫布的大小。
canvas = Image.new("RGB", (img_w*columns, img_h*rows),"white")
我們需要在這個(gè)畫布上面擺放我們的照片。
下面將我們需要的素材照片拿過來,設(shè)置素材圖片(女友照片)所在的文件夾。
source_img_dir = r"C:\software\pycharm-workspace\the-public\test008\images" source_imgs = os.listdir(source_img_dir)
沒有女朋友照片的也不要灰心,可以去百度上面下載哈,可以看看我之前的文章'百度圖片下載2.0'下載很多很多的照片,哈哈哈哈!

接下來就可以來生成我們期待的心形照片墻了,進(jìn)入收割環(huán)節(jié)。
# 定義一個(gè)下標(biāo)值,方便從我們的imgs數(shù)組里面取出照片。
index = 0
# 通過遍歷二維數(shù)組中的行、列,從而在相應(yīng)的位置放上我們的照片。
for row in range(rows):
for column in range(columns):
# 若是當(dāng)前二維數(shù)組中的元素為1時(shí),表示該位置不在心形需要的位置上故不做處理。
if location[row][column] == 1:
continue
# 若是當(dāng)前二維數(shù)組中的元素為1時(shí),需要將一張照片放到該位置上
else:
try:
# 獲取一張圖片并打開為Image對(duì)象
image = Image.open(os.path.join(source_img_dir, source_imgs[index]))
# 重新設(shè)置當(dāng)前照片的尺寸大小
image = image.resize((img_w, img_h))
# 將照片image對(duì)象,放在畫布的特定位置
canvas.paste(image, (img_w * column, img_h * row))
# 遞增圖片列表中的圖片下標(biāo)
index += 1
except:
continue
展示照片墻
canvas.show()
保存照片墻
canvas.save('心形-照片墻.png')到此這篇關(guān)于利用Python制作心型照片墻效果的文章就介紹到這了,更多相關(guān)Python照片墻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)加密接口測(cè)試方法步驟詳解
這篇文章主要介紹了Python實(shí)現(xiàn)加密接口測(cè)試方法步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Python數(shù)據(jù)可視化制作全球地震散點(diǎn)圖
這篇文章主要介紹了Python數(shù)據(jù)可視化制作全球地震散點(diǎn)圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08
Pandas時(shí)間序列:時(shí)期(period)及其算術(shù)運(yùn)算詳解
今天小編就為大家分享一篇Pandas時(shí)間序列:時(shí)期(period)及其算術(shù)運(yùn)算詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
用Python的Flask框架結(jié)合MySQL寫一個(gè)內(nèi)存監(jiān)控程序
這篇文章主要介紹了用Python的Flask框架結(jié)合MySQL些一個(gè)內(nèi)存監(jiān)控程序的例子,并且能將結(jié)果作簡(jiǎn)單的圖形化顯示,需要的朋友可以參考下2015-11-11
Python多叉樹的構(gòu)造及取出節(jié)點(diǎn)數(shù)據(jù)(treelib)的方法
今天小編就為大家分享一篇Python多叉樹的構(gòu)造及取出節(jié)點(diǎn)數(shù)據(jù)(treelib)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python2中文處理紀(jì)要的實(shí)現(xiàn)方法
本篇文章主要介紹了Python2中文處理紀(jì)要的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
Python實(shí)現(xiàn)將Excel轉(zhuǎn)換成為image的方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)將Excel轉(zhuǎn)換成為image的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python3之不使用第三方變量,實(shí)現(xiàn)交換兩個(gè)變量的值
今天小編就為大家分享一篇Python3之不使用第三方變量,實(shí)現(xiàn)交換兩個(gè)變量的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06

