吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5889|回复: 3
收起左侧

[Python 原创] 【原创】【申精】用python去告白 绘制照片墙(自定义格式)

[复制链接]
yx_robert 发表于 2019-2-15 17:52
本帖最后由 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, 在上边绘制你想要的格式你也可以的!

示例

示例

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

寻觅背影 发表于 2019-2-15 18:40
哈哈哈 很有意思了
月月月月 发表于 2020-4-29 21:39
阿拉斯加的闪电 发表于 2020-4-30 12:47
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 05:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表