首先导入相关库:
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')
写在最后天气逐渐微寒,愿这次小小的表白可以给你们带来些许暖意;愿风雨兼程,不忘归途;愿身能似月亭亭,千里伴君行 。
推荐阅读
- 更新win11预览体验计划错误代码0x0怎么办?
- 更新win11错误代码0x0怎么办?
- Win10系统出现蓝屏代码0x00000050怎么处理?
- Win10激活失败错误代码0xC004F034怎么解决?
- Win10错误代码0x0000011b怎么解决?Win10无法连接共享打印机解决方法
- Win7旗舰版Information Tool停止工作故障代码为40000015?
- slui.exe Win10激活显示许可证激活失败错误代码hr=0xC004F074?
- Win7开机提示数字签名错误并有错误代码0xc0000428的解决方法
- win7系统0x00000073开机蓝屏代码怎么解决?
- Win10更新时提示0x80070020错误代码怎么解决?