python表白代码大全 利用python代码画爱心( 二 )


首先导入相关库:
import osimport randomimport numpy as npimport PIL.Image as Image1234定义绘制图形的框架(用二维数组表示):
FRAME = [[0,1,1,0,0,0,0,1,1,0],[1,1,1,1,0,0,1,1,1,1],[1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1,1,0],[0,0,1,1,1,1,1,1,0,0],[0,0,0,1,1,1,1,0,0,0],[0,0,0,0,1,1,0,0,0,0]]这里大家完全可以发挥自己的想象,画你心中所想
其中,0表示不进行填充,1表示用头像进行填充 。
定义相关参数,包括每张用于填充的头像的大小、每个点位填充的次数等:
# 定义相关参数SIZE = 50 # 每张图片的尺寸为50*50N = 2# 每个点位上放置2*2张图片# 计算相关参数width = np.shape(FRAME)[1]*N*SIZE# 照片墙宽度height = np.shape(FRAME)[0]*N*SIZE # 照片墙高度n_img = np.sum(FRAME)*(N**2)# 照片墙需要的照片数filenames = random.sample(os.listdir('./avatars(dr)'),n_img) # 随机选取n_img张照片filenames = ['./avatars(dr)/' f for f in filenames]遍历FRAME,用头像对背景图片进行填充:
# 绘制爱心墙img_bg = Image.new('RGB',(width,height)) # 设置照片墙背景i = 0for y in range(np.shape(FRAME)[0]):for x in range(np.shape(FRAME)[1]):if FRAME[y][x] == 1: # 如果需要填充pos_x = x*N*SIZE # 填充起始X坐标位置pos_y = y*N*SIZE # 填充起始Y坐标位置for yy in range(N):for xx in range(N):img = Image.open(filenames[i])img = img.resize((SIZE,SIZE),Image.ANTIALIAS)img_bg.paste(img,(pos_x xx*SIZE,pos_y yy*SIZE))i= 1# 保存图片img_bg.save('love.jpg')写在最后天气逐渐微寒,愿这次小小的表白可以给你们带来些许暖意;愿风雨兼程,不忘归途;愿身能似月亭亭,千里伴君行 。

推荐阅读