首页 编程教程正文

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

piaodoo 编程教程 2020-02-22 22:00:59 875 0 python教程

本文来源吾爱破解论坛

本帖最后由 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, 在上边绘制你想要的格式你也可以的!

520.jpg (41.81 KB, 下载次数: 46)

下载附件  保存到相册

2019-2-15 17:48 上传

示例

示例

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7291.html

搜索