python制作爱心照片墙的代码和分析,及深入发散各形图。

1 准备

1.1 背景图,我从今日头条下载正版图,注意命名bg,不要放在下面的pic文件夹中,否则会出现在爱心中。建议放在根目录下。


python制作爱心照片墙的代码和分析,及深入发散各形图。

bg

1.2 照片:多一点照片,建议≥48张,可自定义,建议名称1~48,用数字,是随机分布的;放在pic文件夹中,注意代码中的路径要修改。

1.3 python3.8,linux系统(Windows注意路径和目录格式修改)。

2 效果图


python制作爱心照片墙的代码和分析,及深入发散各形图。

我采用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


python制作爱心照片墙的代码和分析,及深入发散各形图。

4.2 啊呀,上面50,其实是48,我把这个也该了,替换回来。

<code> 

PIC_WIDTH,

PIC_HEIGHT

=

100

,100

/<code>

4.3 比如改成:520


python制作爱心照片墙的代码和分析,及深入发散各形图。

4.4 效果图:


python制作爱心照片墙的代码和分析,及深入发散各形图。

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


分享到:


相關文章: