1 準備
1.1 背景圖,我從今日頭條下載正版圖,注意命名bg,不要放在下面的pic文件夾中,否則會出現在愛心中。建議放在根目錄下。
bg
1.2 照片:多一點照片,建議≥48張,可自定義,建議名稱1~48,用數字,是隨機分佈的;放在pic文件夾中,注意代碼中的路徑要修改。
1.3 python3.8,linux系統(Windows注意路徑和目錄格式修改)。
2 效果圖
我採用20張,所以有照片重複。
3 完整代碼:
<code>
import
random
from
PIL
import
Image
import
os
fingure
=
[
[0,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
[0,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
[0,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
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
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
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
,
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
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
[0,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
[0,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
]
PIC_WIDTH,
PIC_HEIGHT
=
100
,100
row_num,
column_num
=
len(fingure),len(fingure[0])
img
=
Image.open("bg.jpeg").resize((column_num*PIC_WIDTH,
row_num*PIC_HEIGHT))
image_names
=
os.listdir("/home/xgj/Desktop/pic")
for
row
in
range(row_num):
for
column
in
range(column_num):
if
fingure[row][column]:
pic
=
Image.open("/home/xgj/Desktop/pic/"
+
random.choice(image_names)).resize((PIC_WIDTH,
PIC_HEIGHT))
img.paste(pic,
(PIC_WIDTH
*
column,
PIC_HEIGHT
*
row))
img.save("new.png")
/<code>4 能不能自定義圖形呢?當然可以。
4.1 先把1替換成0
4.2 啊呀,上面50,其實是48,我把這個也該了,替換回來。
<code>
PIC_WIDTH,
PIC_HEIGHT
=
100
,100
/<code>4.3 比如改成:520
4.4 效果圖:
4.5 520照片牆.py完整代碼:
<code>
import
random
from
PIL
import
Image
import
os
fingure
=
[
[0,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
[0,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
],
[0,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
],
[0,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
],
[0,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
],
[0,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
],
[0,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
],
[0,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
],
[0,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
],
[0,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
]
PIC_WIDTH,
PIC_HEIGHT
=
100
,100
row_num,
column_num
=
len(fingure),len(fingure[0])
img
=
Image.open("bg.jpeg").resize((column_num*PIC_WIDTH,
row_num*PIC_HEIGHT))
image_names
=
os.listdir("/home/xgj/Desktop/pic")
for
row
in
range(row_num):
for
column
in
range(column_num):
if
fingure[row][column]:
pic
=
Image.open("/home/xgj/Desktop/pic/"
+
random.choice(image_names)).resize((PIC_WIDTH,
PIC_HEIGHT))
img.paste(pic,
(PIC_WIDTH
*
column,
PIC_HEIGHT
*
row))
img.save("new520.png")
/<code>5 當然,其他圖形可以自定義,好玩不?我分享出來,教給大家,可以自由發揮和創作喲。