圣诞要到了~教你用Python制作一个表白神器——照片墙,祝你成功

2023-05-16

马上圣诞节,快到了!
~
又到了一年一度表白的时候了

今天教你一个程序员方式的表白!

看一下效果图:
要什么样的,图案都可以自定义的
在这里插入图片描述
在这里插入图片描述

首先,准备阶段

收集你喜欢人(或者你)的照片,多多益善!

然后需要用到的环境

  • python 3.6
  • pycharm
  • pygame
  • PIL
  • random
  • os

接下来,写代码

分为两部分

1.字体形状

import pygame  # 游戏模块,字体功能,  第三方模块   pip install pygame

text = '祝你成功!'
font_size = 30  # 字体大小

pygame.init()  # 模块的初始化  为什么  pygame不是我开发的, 我们用的别人  python语法  三原色
font = pygame.font.Font('msyh.ttc', font_size)
print(font)

# 字体的渲染
# True 锯齿化   rgb 颜色 由三原色组成  黑  白
font_text = font.render(text, True, (0, 0, 0), (255, 255, 255))
print(font_text)

# 获取字体的宽高
height = font_text.get_height()  # 高度
width = font_text.get_width()  # 宽度
print('height: ', height)
print('width: ', width)

# 根据什么逻辑贴图  像素点
print(font_text.get_at((1, 1))[0])


# 根据像素点做分类: 划分为一个二维列表
image_row_list = []
for x in range(height):
    image_col_list = []  #
    for y in range(width):
        if font_text.get_at((y, x))[0] != 255:  # 如果像素点不是白色
            image_col_list.append(1)  # 黑色添加数据1
        else:
            image_col_list.append(0)  # 白色添加数据0
    image_row_list.append(image_col_list)

for row in image_row_list:
    print(row)

2.按照字体形状去贴你准备好的图片

from PIL import Image   # 图像处理模块, pip install pillow
import os  # 目录操作, 内置
import random  # 随机数模块, 随机取一张图片

# 贴图  照片墙
width_len = len(image_row_list[0])  # 列表的宽
height_len = len(image_row_list)  # # 列表的高

# 创建图片
new_image = Image.new('RGB', (width_len * 100, height_len * 100), (255, 255, 255))


# 贴图
img_size = 100  # 初始图片尺寸

for row in range(height_len):
    for clo in range(width_len):
        if image_row_list[row][clo] == 1:  # 如过列表的值为1, 就贴图
            # 读取图片
            source_image = Image.open('images\\' + random.choice(os.listdir(r'images')))
            # 修改图片的大小
            source_image = source_image.resize((img_size, img_size), Image.ANTIALIAS)
            # 将图片复制到new_image
            new_image.paste(source_image, (clo * img_size, row * img_size))


# 照片强保存
print('正在生成照片墙...')
new_image.save(text + '.png')
print('保存完毕, 请在当前文件项目下查找')

效果图:
在这里插入图片描述

这样就大功告成了!

学‘废’了嘛?

欢迎留言评论!

文章没看懂没关系,我这还有视频教程:表白墙←点击左边蓝色文字就可以跳转观看了

Python基础入门教程推荐:←点击左边蓝色文字就可以跳转观看了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

圣诞要到了~教你用Python制作一个表白神器——照片墙,祝你成功 的相关文章

  • java从http url下载文件的简单方法

    br br import java io File br import java net URL br br import org apache commons io FileUtils br br public class Downloa
  • idea运行Sparkstreaming读取hdfs文件遇到的问题

    先贴代码 idea中运行SparkStreaming时 xff0c 动态添加文件至指定目录下 xff0c 结果没有任务信息输出 问题原因 xff1a idea所在主机时间和hdfs集群时间不同步 代码中指定的hdfs目录为非空 启动之前已经
  • [HDU1085][HDU1028][HDU2013] 组合数学入门(母函数、递推)

    先来说一说母函数 xff0c 今天是第一次学 杭电关于母函数的PPT感觉不错 xff0c 挺适合入门看看的 什么是母函数 xff1f 对于序列a0 xff0c a1 xff0c a2 xff0c 构造一函数 xff1a G x 61 a0
  • Elasticsearch系列-Elasticsearch入门教程

    引言 Elasticsearch是著名的开源分布式搜索和数据处理平台 xff0c 是一个基于Lucene的分布式 实时 全文搜索系统 xff0c 其稳定 可靠 高可用 可大规模扩展等特性 xff0c 使得Elasticsearch的应用十分
  • Elasticsearch系列-Elasticsearch集群工作原理

    引言 ELasticsearch作为一个分布式搜索引擎 xff0c 能够出色地支持集群模式 动态水平扩容 故障转移等分布式系统特性 xff0c 这是其作为全文搜索引擎首选的重要原因 本文从零开始描述集群的配置和扩容过程 xff0c 让你对E
  • Elasticsearch系列-集群API(一)

    引言 Elasticsearch提供了大量了的Rest API用以操作Elastic search的相关功能 xff0c 提供了极大的便利 xff0c 掌握这些API是熟练地使用Elasticsearch的前提 Elastic search
  • JVM系列-CPU使用率高问题排查方法

    引言 Java程序在实际生产过程中经常遇到CPU使用率高的问题 xff0c 那么应该如何排查问题的原因呢 xff0c 本文大概描述一下排查方法 一 排查占用CPU的进程 使用top命令 xff0c 在大写打开的情况下按P键或者在大写没有打开
  • python判断list中的值是否完全一样

    对于一个python的list a span class token operator 61 span span class token punctuation span span class token number 1 span spa
  • 生产问题排查-SSLException:Unrecognized SSL message,plainetxt connection异常排查

    引言 最近在一次生产问题中遇到了SSLException Unrecognized SSL message plainetxt connection错误异常信息 xff0c 背景为调用微信api 获取相应信息的时候报错 xff0c 微信ap
  • 【云原生】本地搭建Openshift单机最小化开发环境

    文章目录 一 什么是CodeReady Container xff08 CRC xff09 xff1f 二 本地化部署CodeReady Container三 Code Ready Container的使用 公众号 xff1a MCNU云原
  • 手把手kubernetes本地化部署(含疑难杂症排查解析)

    文章目录 一 什么是Kubernetes xff1f 二 Kubernetes的基本概念PodDeploymentServiceNamespaceConfigMapSecret 三 Kuberntes单机本地部署3 1 安装minikube
  • chatGPT大规模使用kubernetes,云原生技术在AI领域也大有可为

    文章目录 一 云原生在AI领域的应用方向1 1 弹性部署1 2 自动化和可维护性1 3安全性和隔离性 二 云原生在AI领域的应用案例2 1 chatGPT全面使用云原生技术2 2 TensorFlow Serving和k8s及docker的
  • 数据清洗经验

    平时习惯了在某些特定的数据集合上做实验 xff0c 简单的tokenization 预处理等步骤就足够了 但是在数据越来越大的年代 xff0c 数据清洗越来越重要 xff0c 也越来越复杂 看到Philip J Guo 的这篇英文文章 Pa
  • Jetson Nano平台常用软件工具

    本文介绍几个Jetson Nano平台常用的小工具 1 jtop jtop可以查看Jetson Nano目前CPU工作负载情况 xff0c 当前温度等信息 安装方法 xff1a sudo apt get install python pip
  • 如何计算前缀,网络,子网和主机号?

    计算网络掩码长度 xff08 也称为前缀 xff09 xff1a 将网络掩码的点分十进制表示形式转换为二进制 然后 xff0c 从第一个八位位组的最高有效位 xff08 即二进制数的左侧 xff09 开始 xff0c 计算连续的1位的数目
  • Pascal's Triangle(帕斯卡三角形)

    题目 xff1a Given numRows generate the first numRows of Pascal 39 s triangle xff08 杨辉三角 xff09 For example given numRows 61
  • kubernetes集群calico网络部署

    kubernetes 集群 calico 网络部署 一 部署环境及架构 操作系统 ubuntu 14 04 Kubernetes 1 3 5 Etcd 版本 2 2 1 Docker 版本 1 1 0 1 calicoctl 版本 xff1
  • OVN架构原理

    ovn architecture 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方手册 xff0c 有删减 OVN架构 OVN xff08 即Open Virtual Network xff09 是
  • python正则匹配中文/英文/数字/其它字符

    匹配提取 一些字符串既包含中文 也包含英文 数字等 xff0c 需要对这类字符串做提取 xff0c 单个中文字符 英文单词以及数字表达等 需要采用正则匹配的方式来做 比如对于如下针对数据的描述 Android IOS 2条装 xff08 0
  • OVS和OVN 2.8新功能

    OVS和OVN 2 8新功能 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方文档 本文档主要是关于2017年8月底发布的Open vSwitch 2 8中添加的内容 xff0c 重点介绍OVN中的

随机推荐

  • OSPF基础

    OSPF 1 ospf天生无环 是因为使用了SPF算法 该算法的概述是 选择一条花费最少而且没有环路的路径 2 ospf里有三张表 a 邻居表 ospf使用hello报文来发现并维持邻居关系 使用ospf的路由器每10s向相连的路由器发送h
  • OSPF状态机

    1 状态down 进程刚刚开始 路由器发送hello包 2 状态attempt 只出现在NBMA网络类型中 指路由器尽最大的努力去建立邻居 每隔hello间隔就发送hello包 但是还是未收到对方的hello包 2 状态init 路由器收到
  • OSPF分组类型

    1 hello包 目的地址永远是224 0 0 5 ip层协议号是89 包含了 1 唯一标识自己的RID 2 所属的区域AREA 3 hello间隔 死亡时间 缺省10 40 4 DR和BDR的RID 5 接口优先级 6 网络类型 7 验证
  • BGP基础详解

    BGP 边界网关协议 公有AS号 1 64511 私有AS号 64512 65535 状态机 1 idle 空闲 这时候刚刚指定邻居 邻居一定要可达 通过IGP或者静态路由 用loopback接口要注意更新源 ebgp邻居要写多跳
  • STP基础

    交换机使用专用集成电路ASIC来创建并维护其过滤表 cisco交换机上没有aux端口 交换机不需要任何IP 给交换机设置IP纯粹是为了管理的需要 1 交换网络一般分为三个层次 接入层 分布层 核心层 其中 接入层接入用户 分布层做各种流量策
  • VLAN基础

    1 默认时 交换机分割冲突域 路由器分割广播域 默认时 路由器过滤广播 交换机转发广播到所有网段 默认时 交换机上所有端口都是VLAN1的成员 VLAN1是管理VLAN 不能删除和修改 每个VLAN就是一个广播域 如果想要实现VLAN之间的
  • DHCP snooping

    一 采用DHCP服务的常见问题 架设DHCP服务器可以为客户端自动分配IP地址 掩码 默认网关 DNS服务器等网络参数 xff0c 简化了网络配置 xff0c 提高了管理效率 但在DHCP服务的管理上存在一些问题 xff0c 常见的有 xf
  • 组播技术架构

    组播基础 span class hljs attribute 1 保留的组播地址 224 0 0 1 224 0 0 255 公网上的组播地址 224 0 1 0 238 255 255 255 私网上的组播地址 239 0 0 0 239
  • python中的三元运算符

    python中没有类似java或c 43 43 中的 三元运算符 xff0c 如果想用类似的结构 xff0c 可以用if else来代替 x span class token operator 61 span span class toke
  • 关于派生类构造函数与基类构造函数的调用顺序问题

    面向对象程序设计基础 xff08 第二版 李师贤等 xff0c 第254页 xff1a C 43 43 语言的基本规则是 xff1a 创建一个派生类的对象时 xff0c 如果基类带有构造函数 xff0c 则先调用基类的构造函数 xff0c
  • C++中的strrev函数

    C 43 43 中的strrev函数 C 43 43 中有函数strrev xff0c 功能是对字符串实现反转 xff0c 但是要记住 xff0c strrev函数只对字符数组有效 xff0c 对string类型是无效的 具体见下面代码 x
  • 工厂模式(Factory Pattern)

    Java工厂模式 xff08 Factory Pattern xff09 是一种创建型设计模式 xff0c 它提供了一个通用的接口来创建对象 xff0c 但允许子类决定实例化哪个类 这种模式通过将对象的创建委托给工厂类来实现 xff0c 从
  • Java建造者模式(Builder Pattern)

    ava建造者模式 xff08 Builder Pattern xff09 是一种创建型设计模式 xff0c 它将对象的构建过程分离出来 xff0c 使得可以使用相同的构建过程来创建不同的对象表示形式 建造者模式通常用于创建复杂的对象 xff
  • Can‘t uninstall ‘scipy‘. No files were found to uninstall.以及scipy安装问题解决方法

    ubuntu系统下使用pip uninstall scipy命令卸载包时 遇到报错信息为 Found existing installation span class token operator span scipy span class
  • Package ‘libssl1.0.0‘ has no installation candidate

    安装libssl1 0 0失败 xff0c 问题 xff1a Package libssl1 0 0 has no installation candidate 解决方法 xff1a sudo apt get install build e
  • IDR 学习笔记

    Multiview Neural Surface Reconstruction by Disentangling Geometry and Appearance 主页 xff1a https lioryariv github io idr
  • Debian 11 驱动问题解决方法

    Debian 11 驱动问题解决方法 前言问题解决方法升级内核安装 Firmware Linux 前言 下面是作者在安装时的系统版本和无法驱动的硬件信息 xff1a Debian 镜像 xff1a debian 11 6 0 amd64 D
  • 使用windows引导的ubuntu双操作系统

    避坑指南 bios 取消安全boot 安全启动 快速启动 报rst错误的 把 bois 里的 SATA config 把inter 改为ahci 没报请无视 作为码农 xff0c 总会时不时的需要使用linux的开发环境 xff0c 使用虚
  • 想听一首歌好难?程序员教你一键下载

    1 首先要先安装一下Python第三方库 requests pip install requestsprettytable pip install PrettyTable 2 使用的开发环境 xff1a 版 本 xff1a python 3
  • 圣诞要到了~教你用Python制作一个表白神器——照片墙,祝你成功

    马上圣诞节 xff0c 快到了 xff01 又到了一年一度表白的时候了 今天教你一个程序员方式的表白 xff01 看一下效果图 xff1a 要什么样的 xff0c 图案都可以自定义的 首先 xff0c 准备阶段 收集你喜欢人 xff08 或