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

1 准备

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

677472afa96cade9a66d4d7971c68ee3.png

bg

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

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

2 效果图

03d57759ad6594b88be2f3d0d311ad4c.png

我采用20张,所以有照片重复。

3 完整代码:

#---导出模块---import randomfrom PIL import Imageimport 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))#读取照片名,注意pic后面没有/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后面有/            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")

4 能不能自定义图形呢?当然可以。

4.1 先把1替换成0

d1d6fdc2d2b67313f16bb653e50c5ce3.gif

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

# 图片尺寸、像素PIC_WIDTH, PIC_HEIGHT = 100,100

4.3 比如改成:520

ac7ed62e8d09498fb7a299b0bd8d643e.png

4.4 效果图:

4c0c74fadb4277fcadb11f55552c52f6.png

4.5 520照片墙.py完整代码:

#---导出模块---import randomfrom PIL import Imageimport 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))#读取照片名,注意pic后面没有/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后面有/            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")

5 当然,其他图形可以自定义,好玩不?我分享出来,教给大家,可以自由发挥和创作哟。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值