Qt图标字体文件中提取字体保存为图片

本文借用别人写的一个IconHelper来做说明。

1. 加载一个字体文件

 QScopedPointer<IconHelper> iconHelper(new IconHelper(":/fa-regular-400.ttf", "Font Awesome 6 Pro Regular"));

构造函数

IconHelper::IconHelper(const QString &fontFile, const QString &fontName,QObject *parent): QObject(parent) {// 判断图形字体是否存在,不存在则加入//  QFontDatabase fontDb;if (!QFontDatabase::families().contains(fontName) &&QFile(fontFile).exists()) {int fontId = QFontDatabase::addApplicationFont(fontFile);QStringList listName = QFontDatabase::applicationFontFamilies(fontId);if (listName.count() == 0) {qDebug() << QString("load %1 error").arg(fontName);}}// 再次判断是否包含字体名称防止加载失败if (QFontDatabase::families().contains(fontName)) {iconFont = QFont(fontName);
#if (QT_VERSION >= QT_VERSION_CHECK(4, 8, 0))iconFont.setHintingPreference(QFont::PreferNoHinting);
#endif}
}

 在资源文件中绑定一个字体,然后初始化这个IconHelper, 它将会检查系统字体库,并添加到字体库中。

最后找到这个字体,留存备用。

2. 从字体的编号保存到图片

struct FontImageCode {int code;QString name;
};void MainWindow::SaveFontImages() {QScopedPointer<IconHelper> iconHelper(new IconHelper(":/fa-regular-400.ttf", "Font Awesome 6 Pro Regular"));QString color("#F08784");QString fileExt(".png");int fontSize = 600;int imageWidth = 600;int imageHeight = 600;QList<FontImageCode> images{{0xf01d, "circle-play"},{0x23f8, "pause"},};for (auto &f : images) {QPixmap pix = iconHelper->getPixmap1(color, f.code, fontSize,imageWidth, imageHeight);QImage img = pix.toImage();img.save(f.name + fileExt);}
}

字体颜色,字体尺寸,图片尺寸都可以指定的。

运行查看结果

 3. 如何生成图片

QPixmap IconHelper::getPixmap1(const QColor &color, int icon, quint32 size,quint32 width, quint32 height, int flags) {// 主动绘制图形字体到图片QPixmap pix(width, height);pix.fill(Qt::transparent); // 用透明色填充QPainter painter;painter.begin(&pix); // 需要先调用 begin() 函数来初始化 QPainter// 对象。这会告诉 QPainter 要在哪个设备上进行绘制。painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);painter.setPen(color);iconFont.setPixelSize(size);painter.setFont(iconFont);painter.drawText(pix.rect(), flags, (QChar)icon);painter.end(); // 在每次使用完 QPainter 进行绘制后,应该调用 end()// 函数来释放资源,并确保正确地结束绘图操作。return pix;
}

 先建立一张图片,用透明色填充。

 在这图片上建立画笔,设置画笔颜色,再设置成这个字体,最后画上文本。

画文本的时候,填写字体编号就行了。

4. ttf字体预览

Iconfont Preview (luckly-mjw.cn) 这个网站很好用的。

5. Font Awesome Pro 6.5.1 字体下载

找到了专业版付费字体,里面包含图标很多。分享下载吧

链接:https://pan.baidu.com/s/1yZcaPPVX4OcaJ5iK7uZtOQ?pwd=x3pq 
提取码:x3pq 
--来自百度网盘超级会员V8的分享

6. 本文源码

Image/Font2Image · 沁明/QtDemo - 码云 - 开源中国 (gitee.com) 

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

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

相关文章

【基础】LwM2M 通讯协议

【基础】LwM2M 通讯协议 LwM2M 协议基础LwM2M 简介LwM2M 基本架构LwM2M 资源定义 LwM2M 协议实现开源协议实现Java LwM2M Client LwM2M 协议基础 LwM2M 简介 LwM2M 的全称为 Lightweight Machine-To-Machine&#xff0c;是一种适用于物联网设备的轻量级的通讯协议&#xff0c…

Flutter基础 -- Flutter布局练习(小项目)

目录 1. Splash 布局&#xff08;第一页&#xff09; 1.1 目标 1.2 当前效果图 1.3 创建 Splash 界面 1.4 设置 MaterialApp 1.5 设置 Splash 背景色 1.6 布局 Splash 界面 1.7 总结 2. Splash 圆角图片 2.1 目标 2.2 当前效果图 2.3 蓝湖下载图片 2.4 图片导入项…

在编程Python的时候发生ModuleNotFoundError: No module named distutils报错怎么办

1.先查看Python版本 首先我们先去打开终端就是先widr再输入cmd 然后进去在输入Python -V要注意大小写 我的版本是3.9.7版本但是我使用的PyCharm 是 2021.1.1 x64版本没有办法主动去识别因为这个版太低了你的Python版本很高所以无法识别 2.解决方法 只需要把你的Python现版…

微信公众号【原子与分子模拟】: 熔化温度 + 超导电性 + 电子化合物 + 分子动力学模拟 + 第一性原理计算 + 数据处理程序

往期内容主要涵盖&#xff1a; 熔化温度 超导电性 电子化合物 分子动力学模拟 第一性原理计算 数据处理程序 【1】熔化温度 分子动力学 LAMMPS 相关内容 【文献分享】分子动力学模拟 LAMMPS 熔化温度 晶体缺陷 熔化方法 LAMMPS 文献&#xff1a;金属熔化行为的局域…

后端返回图片格式乱码

try {const response await request.get(checkCodeUrl.value,{responseType:"arraybuffer"});console.log("验证码请求成功:", response);checkCodeUrl.value data: image/jpeg;base64,${btoa(new Uint8Array(response).reduce((data, byte) > data …

『大模型笔记』大型语言模型(LLMs)微调(Fine-tuning)优化研究!

大型语言模型(LLMs)微调(Fine-tuning)优化研究! 文章目录 一. 摘要二. 大模型优化技术概述2.1 梯度检查点(Gradient Checkpointing)2.2 低秩适应2.3 DeepSpeed2.4 Flash Attention三. GPU内存需求的理论分析3.1. 模型状态内存(Model states memory) - 模型参数、梯度、优化器状…

vscode ctrl+鼠标左键无法跳转

打开设置&#xff0c;搜索intel…… 将这个智能感知改成default就可以了&#xff0c;我之前是在disable处。 分析了一下&#xff0c;其实跳转功能主要是根据上下文语法分析来实现的&#xff0c;并不是简单得全文匹配&#xff0c;因此需要相关得语法分析工具。 那么为什么默认式…

微软Edge浏览器深度解析:功能、同步、隐私与安全

微软Edge浏览器是微软公司开发的一款网页浏览器,它基于Chromium内核,提供了快速、安全和兼容性良好的网页浏览体验。以下是关于微软Edge浏览器的详细信息和使用指南: 微软Edge浏览器的主要特点: 1. 基于Chromium内核: 渲染引擎:Chromium内核是基于开源项目Blink的,它…

可视化数据科学平台在信贷领域应用系列五:零代码可视化建模

信贷风控模型是金融机构风险管理的核心工具&#xff0c;在信贷风险管理工作中扮演着至关重要的角色。随着信贷市场的环境不断变化&#xff0c;信贷业务的风险日趋复杂化和隐蔽化&#xff0c;开发和应用准确高效的信贷风控模型显得尤为重要。信贷风险控制面临着越来越大的挑战和…

问你为什么选择Kafka,你会怎么回答?

可靠的含义在百度百科的解释是&#xff1a;可以信赖、可以相信、可靠的朋友。那Kafka究竟是不是一个可靠的朋友呢&#xff1f;既然全世界绝大部分高可用系统都有Kafka的支持&#xff0c;Kafka必定有其过人之处&#xff0c;跟着我来分析分析。 另外多提一嘴Kafka在GitHub目前已…

六西格玛培训,带你解锁职场超能力工具!

当提及六西格玛培训的精髓时&#xff0c;我们不得不提到那些强大而实用的工具&#xff0c;它们如同探险者的指南针&#xff0c;引导我们走向卓越。今天&#xff0c;就让我们一起揭开这些神秘工具的面纱&#xff0c;探寻六西格玛背后的智慧。 首先&#xff0c;DMAIC流程是六西格…

python小游戏:猜数字、猜动物、单词接龙(带界面)

正在学习python的各位童鞋&#xff0c;可以多多找些程序来练练手&#xff0c;从而更快的掌握python编程。这里就为大家找了三个示例小程序&#xff1a;猜数字、猜动物、单词接龙。 一、猜数字 程序会随机生成一个1到100之间的数字&#xff0c;然后让用户尝试猜测这个数字。用户…

cesium 漫游

token记得换成您自己的&#xff01;&#xff01;&#xff01; 申请cesium的token 官网【Cesium: The Platform for 3D Geospatial】 <template><div id"cesiumContatiner"><!-- <div id"mapContainer1"></div> --></di…

如何理解敏捷开发和瀑布模型的区别

敏捷开发和瀑布模型是两种不同的软件开发方法&#xff0c;它们在多个方面存在显著的差异。以下是它们之间的主要区别&#xff1a; 开发流程&#xff1a; 瀑布模型&#xff1a;采用线性的开发流程&#xff0c;按照预先规划的顺序依次进行需求分析、设计、编码、测试和维护等环节…

【蒙特卡洛仿真的corner】

蒙特卡洛仿真的corner global variation指的是不同晶圆之间的process的差别 local variation指的是同一个晶圆内的不同管子之间的mismatch smic40ll工艺中&#xff0c;ttg&#xff0c;ssg&#xff0c;sfg&#xff0c;fsg corner只包含mismatch ss&#xff0c;tt&#xff0c;sf&…

员工离职删除自己做的文件违法么?如何杜绝这种现象?

员工离职时删除自己做的文件是否违法&#xff0c;需要视情况而定&#xff1a; 如果删除的是个人自己的文件&#xff1a; 在这种情况下&#xff0c;员工删除的是自己制作的、不涉及公司机密或经营数据的个人文件&#xff0c;通常不会被视为违法行为。 如果删除的是公司的文件…

探索 CSV 模块:Python 中 CSV 数据持久化的最佳实践

&#x1f340; 前言 博客地址&#xff1a; CSDN&#xff1a;https://blog.csdn.net/powerbiubiu &#x1f44b; 简介 本章节介绍使用 CSV 文件来存储数据&#xff0c;CSV 文件是一种常见的数据格式&#xff0c;可以用来存储和交换表格数据。CSV 文件由一系列的行组成&#x…

SQL Developer管理RESTful 服务

RESTful 服务依赖于ORDS&#xff08;Oracle REST Data Services&#xff09;&#xff0c;所以在进行本实验前&#xff0c;请先确认数据库服务器上的ORDS服务已启动&#xff1a; $ systemctl status ords ● ords.service - Oracle REST Data ServicesLoaded: loaded (/etc/sys…

小程序canvas的同层渲染 这个属性不加,就不会生效!

做微信小程序的时候&#xff0c;发现vant-weapp的图表相关的vant再实机上怎么用都有问题&#xff08;同层渲染失败&#xff09;。 看了官方文档结果说了半天一点用都没有&#xff0c;官方原话是&#xff1a;当前所有原生组件&#xff08;除 input 组件 focus 状态&#xff09;均…

scripts/Makefile.host 分析【fixdep、conf】

文章目录 1. 目标 $(obj)/fixdep1.1 cmd_host-csingle函数分析&#xff1a; 2. 目标 $(obj)/conf2.1 cmd_host-cmulti函数分析&#xff1a;2.2 生成 $(obj)/conf.o 文件&#xff1a;2.3 生成 $(obj)/zconf.tab.o 文件&#xff1a; 1 # SPDX-License-Identifier: GPL-2.0 2 …