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 当然,其他图形可以自定义,好玩不?我分享出来,教给大家,可以自由发挥和创作哟。