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

说明:有的项目启动时,会在控制台输出下面的图案。本文介绍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.mzph.cn/news/798896.shtml

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

相关文章

【Unity每日一记】鼠标相关API

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

【WPF应用38】WPF 控件打开文件选择-OpenFileDialog的详解与示例

在 WPF 应用程序中,经常需要让用户选择文件,例如打开图片、文本文件等。OpenFileDialog 是一个用于实现这个功能的控件。本文将详细介绍 OpenFileDialog 的使用流程,并提供一个完整的示例代码。 一、WPF 控件打开文件选择的必要性 在 WPF 应…

Linux初学(十七)redis

一、简介 redis就是一个内存数据库 redis中的数据,都是保存在内存中 端口:6379 二、安装redis 方法一:编译安装 方法二:yum安装-epel 第一步:配置epel源 详见:http://t.csdnimg.cn/AFl1K第二步&#xff1a…

GaN肖特基势垒二极管(SBD)的多阴极应用建模与参数提取

GaN Schottky Barrier Diode (SBD) Modeling and Parameter Extraction for Multicathode Application(TED 24年) 摘要 本文提出了一种适用于多阴极应用的紧凑型可扩展GaN肖特基二极管大信号模型。详细给出了外在和内在模型参数的可扩展规则。实验和理…

kamailio mysql数据表解析

kamctl db exec "show tables;" 查询mysql数据表 acc:存储呼叫详单(Call Detail Records, CDRs)的信息,包括呼叫持续时间、呼叫状态、被叫号码等。这些记录有助于统计和分析呼叫的数据。 acc_cdrs:存储呼叫…

HTTP的强制缓存和协商缓存

HTTP的强制缓存和协商缓存 HTTP的缓存技术强制缓存ExpiresCache-Control 协商缓存If-Modified-Since和Last-ModifiedIf-None-Match和ETag优先级 可被缓存的请求方法总结 HTTP的缓存技术 当我们进行HTTP请求时,需要将请求报文发送给对端,当服务端收到请求…

Stm32 HAL库 访问内部flash空间

Stm32 HAL库 访问内部flash空间 代码的部分串口配置申明文件main函数 在一些时候,需要存储一些数据,但是又不想接外部的flash,那我们可以知道,其实还有内部的flash可以使用, 需要注意的是内部flash,读写次数…

书生浦语训练营二期第三次作业

文章目录 基础作业1. 在茴香豆 Web 版中创建自己领域的知识问答助手第一轮对话第二轮对话第三轮对话第四轮对话第五轮对话 2.在 InternLM Studio 上部署茴香豆技术助手修改配置文件创建知识库运行茴香豆知识助手 基础作业 1. 在茴香豆 Web 版中创建自己领域的知识问答助手 我…

【Docker常用命令(四)】

目录 Docker常用命令(四)注意 Docker常用命令(四) docker pause docker pause 命令用于暂停容器中的所有进程。docker pause CONTAINER [CONTAINER...]常用子命令和选项:无特定常用选项。docker port docker port 命令…

神经网络中的超参数调整

背景 在深度神经网络学习和优化中,超参数调整一项必备技能,通过观察在训练过程中的监测指标如损失loss和准确率来判断当前模型处于什么样的训练状态,及时调整超参数以更科学地训练模型能够提高资源利用率。在本研究中使用了以下超参数&#x…

iOS 17.5系统或可识别并禁用未知跟踪器,苹果Find My技术应用越来越合理

苹果公司去年与谷歌合作,宣布将制定新的行业标准来解决人们日益关注的跟踪器隐私问题。苹果计划在即将发布的 iOS 17.5 系统中加入这项提升用户隐私保护的新功能。 科技网站 9to5Mac 在苹果发布的 iOS 17.5 开发者测试版内部代码中发现了这项反跟踪功能的蛛丝马迹…

XML HTTP传输 小结

what’s XML XML 指可扩展标记语言(eXtensible Markup Language)。 XML 被设计用来传输和存储数据,不用于表现和展示数据,HTML 则用来表现数据。 XML 是独立于软件和硬件的信息传输工具。 应该掌握的基础知识 HTMLJavaScript…

使用pytorch构建有监督的条件GAN(conditional GAN)网络模型

本文为此系列的第四篇conditional GAN,上一篇为WGAN-GP。文中在无监督的基础上重点讲解作为有监督对比无监督的差异,若有不懂的无监督知识点可以看本系列第一篇。 原理 有条件与无条件 如图投进硬币随机得到一个乒乓球的例子可以看成是一个无监督的GAN&…

从0到1搭建文档库——sphinx + git + read the docs

sphinx git read the docs 目录 一、sphinx 1 sphinx的安装 2 本地构建文件框架 1)创建基本框架(生成index.rst ;conf.py) conf.py默认内容 index.rst默认内容 2)生成页面(Windows系统下&#xf…

实战webSocket压测(三)Jmeter真实接口联调

背景: 接口地址为:ws://sunlei.demo 接口说明:websocket接口,首次连接,通过Text请求设置开启标志,然后通过wav文件流传输,达到后端服务可以根据传输信息进行解析满足指定标准后,web…

前端开发语言有哪些?

前端开发语言是指用于开发网页和网站前端部分的编程语言。随着互联网的发展,前端开发越发重要,也涌现出了许多前端开发语言。本文将介绍一些常见的前端开发语言。 HTML(超文本标记语言):HTML是一种用于描述网页结构和内…

锂电池算法学习集合---基于matlab/simulink的电池参数辨识、充放电、SOC估计算法。

整理了锂电池的多种算法合集:涵盖电动汽车Simulink模型、电动汽车动力电池SOC估算模型、动力电池及电池管理系统BMS。 电动汽车动力电池SOC估算模型含有:电池参数辨识模型、电池的充放电数据、电池手册、卡尔曼滤波电池SOC文献、卡尔曼滤波算法的锂电池SOC估算模型…

C++ | Leetcode C++题解之第16题最接近的三数之和

题目&#xff1a; 题解&#xff1a; class Solution { public:int threeSumClosest(vector<int>& nums, int target) {sort(nums.begin(), nums.end());int n nums.size();int best 1e7;// 根据差值的绝对值来更新答案auto update [&](int cur) {if (abs(cur…

Linux 上安装 SQLite

SQLite Download Page 从上面的链接中源代码区下载 sqlite-autoconf-*.tar.gz。 历史版本见下连接&#xff1a; https://sqlite.org/chronology.html

Word wrap在计算机代表的含义(自动换行)

“Word wrap”是一个计算机术语&#xff0c;用于描述文本处理器在内容超过容器边界时自动将超出部分转移到下一行的功能。在多种编程语言和文本编辑工具中&#xff0c;都有实现这一功能的函数或选项。 在编程中&#xff0c;例如某些编程语言中的wordwrap函数&#xff0c;能够按…