如何自定义项目启动时的图案

说明:有的项目启动时,会在控制台输出下面的图案。本文介绍Spring Boot项目如何自定义项目启动时的图案;

在这里插入图片描述

生成字符图案

首先,找到一张需要设置的图片,使用下面的代码,将图片转为字符文件;

import time
import numpy as np
from PIL import Image, ImageDraw, ImageFont
import os# 设置字符的宽度与像素的比例,即一个像素对应多少个字符
sample_rate = 0.1250
# 图片缩放比例
reduce_rate = 0.5# 将图片转换为字符图片
def ascii_art(file):# 打开这个图片im = Image.open(file)# 加载字体样式和设置字体大小font = ImageFont.truetype("SourceCodePro-Bold.ttf", size=14)# 得出字符的纵横比aspect_ratio = font.getbbox("x")[2] / font.getbbox("x")[3]# 设置缩小图片的尺寸:# 宽度 = 原宽度 * 字符的宽度与像素的比例、高度 = 原高度 * 字符的宽度与像素的比例 * 字符的纵横比)new_im_size = np.array([im.size[0] * sample_rate * reduce_rate, im.size[1] * sample_rate * aspect_ratio * reduce_rate]).astype(int)# 缩小图像im = im.resize(new_im_size)# 转换为灰度图像im = im.convert("L")# 转换为numpy数组以进行图像处理im = np.array(im)# 设置字符集symbols = np.array(list(" ^->(LYXH0@M"))# symbols = np.array(list(" ^>LX0M"))# 将灰阶值映射到字符集if im.max() != im.min():im = (im - im.min()) / (im.max() - im.min()) * (symbols.size - 1)# 生成ascii艺术ascii = symbols[im.astype(int)]# 创建用于绘制ascii文本的输出图像letter_size = font.getbbox("x")[2], font.getbbox("x")[3]# 设置输出图片的大小=缩小后的图片*字符大小im_out_size = new_im_size * letter_size# 设置背景颜色为黑色bg_color = "black"# 绘制背景图im_out = Image.new("RGB", tuple(im_out_size), bg_color)# 创建一个绘图对象draw = ImageDraw.Draw(im_out)# 逐个字符绘制y = 0           # 设置字符在图片中的高度,初始值为0count = 0begin_time = time.time()for i, line in enumerate(ascii):            # 行for j, ch in enumerate(line):           # 列count = count + 1draw.text((letter_size[0] * j, y), ch[0], font=font)y += letter_size[1]end_time = time.time()print('单张图片用时:%d秒' % (end_time - begin_time))# 保存到一个文本文件里with open(file + ".txt", "w") as f:f.write("\n".join(["".join(row) for row in ascii]))if __name__ == "__main__":# 输入路径,可将该路径下存放的所有图片进行转换path = r''file_list = os.listdir(path)for file in file_list:ascii_art(path + '\\' + file)

如下,是图片转换后的字符文件;

在这里插入图片描述

代码详细说明参考我之前写的这篇文章;

  • 挑战做出全网最牛逼的字符动画

项目中设置

在Resource文件夹下,创建一个“banner.txt”文本文件。banner是横幅的意思,文件里的内容会在项目启动时展示在控制台中,如下:

在这里插入图片描述

启动项目;

在这里插入图片描述

可在settings里,将字体行高设置为1.0,这样图案不会被拉伸,另外可以在banner.txt里设置字符的颜色(${AnsiColor.颜色}),如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/595731.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Volatile

目录 介绍 Volatile保证可见性的原理 可见性问题 原理 Volatile保证有序性的原理 指令重排 内存屏障 如何解决volatile不保证原子性问题? 由Volatile解决的单例模式中双重检索问题(DCL) 介绍 volatile 是 Java 虚拟机提供的轻量级的同步机制(三…

160.相交链表

题目描述 解题思路 ————看评论区大神的思路———— 设「第一个公共节点」为 node ,「链表 headA」的节点数量为 aaa ,「链表 headB」的节点数量为 bbb ,「两链表的公共尾部」的节点数量为 ccc ,则有: 头节点 …

llm dpo loss 实现 训练实例

原视频地址 dpo loss 过程代码实现感谢: 过程 代码实现 import paddle from tqdm import tqdmclass RefModel(paddle.nn.Layer):def __init__(self, hidden_size, voc_size):super(RefModel, self).__init__()self.em paddle.nn.Embedding(voc_size, hidden_size)…

C++——栈和队列容器

前言:这篇文章我们将栈和队列两个容器放在一起进行分享,因为这两个要分享的知识较少,而且两者在结构上有很多相似之处,比如栈只能在栈顶操作,队列只能在队头和队尾操作。 不同于前边所分享的三种容器,这篇…

CNAS软件测试公司有什么好处?如何选择靠谱的软件测试公司?

CNAS认可是中国合格评定国家认可委员会的英文缩写,由国家认证认可监督管理委员会批准设立并授权的国家认可机构,统一负责对认证机构、实验室和检验机构等相关机构的认可工作。 在软件测试行业,CNAS认可具有重要意义。它标志着一个软件测试公…

最新在线工具箱网站系统源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 系统内置高达72种站长工具、开发工具、娱乐工具等功能。此系统支持本地调用API,同时还自带免费API接口, 是一个多功能性工具程序,支持后台管理、上…

大学教材《C语言程序设计》(浙大版)课后习题解析 | 第十一、十二章

概述 本文主要提供《C语言程序设计》(浙大版) 第十一、十二章的课后习题解析,以方便同学们完成题目后作为参考对照。 专栏直达链接: 《C语言程序设计》(浙大版)_孟俊宇-MJY的博客-CSDN博客​http://t.csdnimg.cn/ZtcgY 一.第十一章(指针进…

达梦DMHS-Manager工具安装部署

目录 1、前言 1.1、平台架构 1.2、平台原理 2、环境准备 2.1、硬件环境 2.2、软件环境 2.3、安装DMHS 2.3.1、源端DMHS前期准备 2.3.2、源端DMHS安装 2.3.3、目的端DMHS安装 3、DMHS-Manager客户端部署 3.1、启动dmhs web服务 3.2、登录web管理平台 4、添加DMHS实…

Linux系统基础知识

​ 一、Linux基础 1、简介 严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核的操作系统。 2、系统特点 开源(源代码可见)免费(Linux系统)注意:开源不一定免费安全性稳定可移植性好高性能(服务端没有图形页面)3、发…

list的使用

前言 我们前面已经对string和vector进行了学习使用,以及对他们的底层进行了模拟实现!本期我们继续学习STL的另外一个容器---list。 本期内容介绍 什么是list? list的常用接口 什么是list? 还是来看看官方的文档说明! 这里通过…

基于springboot实现教师人事档案管理系统项目【项目源码+论文说明】

基于springboot实现在线商城系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本ONLY在线商城系统就是在这样的大环境下诞生,其可以帮助管理…

如何客观评价5G的现状?

前几天,在知乎上看到一个帖子,热度挺高: 看了一下帖子的回答,基本上都在骂5G。 作为通信行业从业者,我说说我自己的看法。大家姑且听听,一起交流一下。 我们目前所处的这个时代,有一个很大的特点…