好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 yx_robert 于 2019-2-15 18:19 编辑
当“昂贵的鲜花+浪漫的烛光晚餐”的标配表白方式早已落入俗套,身为程序员的我们,不应该拥有自己专属的浪漫吗?是用代码表达爱意,或是用base64加密你对她的告白,还是以她的名字为域名,为她编写专属于她的网站?"我写过最得意的代码,就是让你答应做我女朋友的那串代码。"
撩妹可不能全靠一张嘴礼物一定要走心又有心!恋习Python教你一招
搞定速速开撩!
用Python为她DIY一张照片墙[Python] 纯文本查看 复制代码 # -*- coding: utf-8 -*-
from PIL import Image
import os, sys
save_image_name = "New.png"
raw_name = "raw.bmp"
res_file = ".\\res" # 资源照片路径
mw = 100 # 单个照片的尺寸
def load_raw(raw_name, data_list, _size):
im = Image.open(raw_name)
w, h = im.size
for i in range(w):
for j in range(h):
v = im.getpixel((i, j))
if v != 0:
# 将灰度图的像素映射到照片墙的坐标内
x = i * _size[0] / w
y = j * _size[1] / h
data_list[x][y] = 1
def get_picture_list(picture_list):
for filename in os.listdir(res_file):
filepath = os.path.join(res_file, filename)
picture_list.append(filepath)
# 绘制一张照片到指定位置
def draw_picture(save_image, x, y, im_name):
in_image = Image.open(im_name)
in_image = in_image.resize((mw, mw),Image.ANTIALIAS)
save_image.paste(in_image, ((x-1)*mw, (y-1)*mw))
def main():
# 照片墙能容纳的最大照片数量 20 * 20
w, h = (40, 40)
data_list =[[0 for col in range(h)] for row in range(w)]
# 加载灰度图, 照片墙样式
load_raw(raw_name, data_list, (w, h))
# 创建一张新的照片
save_image = Image.new('RGBA' ,(mw*w, mw*h))
# 获取所有照片路径名称
picture_list = []
get_picture_list(picture_list)
pos = 0
print picture_list
# 按照样式, 缩放绘制照片到指定位置
for i in range(w):
for j in range(h):
if data_list[i][j] > 0:
draw_picture(save_image, i, j, picture_list[pos])
print i, j
pos += 1
pos = pos % len(picture_list)
# 保存
save_image.show()
save_image.save(save_image_name)
if __name__ == '__main__':
main()
做法很简单把准备好的照片资源放到res文件夹下, 在准备一张黑底照片,改名为raw.bmp, 在上边绘制你想要的格式你也可以的!
|
-
示例
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|