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 當然,其他圖形可以自定義,好玩不?我分享出來,教給大家,可以自由發揮和創作喲。


分享到:


相關文章: