点亮.NET的文字云艺术之光——Sdcb.WordCloud 2.0

作为一名.NET开发者,你是否渴望拥有一个强大且易用的库,用以在你的应用程序中创造美轮美奂的文字云?我在经过一轮农历新年前的码力全开后,非常自豪地向大家宣布,我的个人项目—Sdcb.WordCloud 2.0,现已推出!相比于上一个版本(1.2),这个全新的版本在性能上更进一步,利用指针操作等技术进行了深度优化,大幅提升了文字云生成的速度。且支持跨平台、生成多种格式输出。现在,我们赋予文字以自由,让它们在虚拟的空间中起舞。

版本 2.0 的全新提升

  • 跨平台兼容性:在不同操作系统上工作,无需依赖于System.Drawing
  • 多种输出格式:支持生成图片、SVG或JSON数据的文字云。
  • 灵活配置:通过各种选项自定义您的文字云,包括文本方向、字体和遮罩。
  • 开源:在MIT许可下自由提供,欢迎贡献和修改。

在Sdcb.WordCloud 2.0中,我注重性能的同时,也保持了对创造力的尊重。利用.NET的强大功能,特别是指针操作的精细优化,这个版本的文字云生成不仅更加迅速,更在视觉效果上带来了更为丰富的展现。以下是基于Sdcb.WordCloud 2.0,你可以轻松实现的一些很酷的功能。

不同文本方向的文字云

要实现不同方向排列的文字云,你可以通过调整TextOrientation选项来轻松实现。以下展示了如何用一段简洁的代码创建五种文本方向的文字云:

TextOrientations[] orientations =
[
TextOrientations.PreferHorizontal, // 默认
TextOrientations.PreferVertical,
TextOrientations.HorizontalOnly,
TextOrientations.VerticalOnly,
TextOrientations.Random,
];
foreach (var o in orientations)
{
WordCloud wc = WordCloud.Create(new WordCloudOptions(600, 600, MakeDemoScore())
{
TextOrientation = o,
});
byte[] pngBytes = wc.ToSKBitmap().Encode(SKEncodedImageFormat.Png, 100).AsSpan().ToArray();
File.WriteAllBytes($"{o}.png", pngBytes);
}

这样你就能得到下面这些充满艺术感的文字云,每一张都展示了文字的不同排列方向。

文字云转换为JSON,并进行反转操作

使用Sdcb.WordCloud,可以很灵活地操作文字云的数据,甚至可以将其转换为JSON格式,方便存储和交换:

WordCloud wc = WordCloud.Create(new WordCloudOptions(900, 900, MakeDemoScore())
{
FontManager = new FontManager([SKTypeface.FromFamilyName("Times New Roman")]),
Mask = MaskOptions.CreateWithForegroundColor(SKBitmap.Decode(new HttpClient().GetByteArrayAsync("https://io.starworks.cc:88/cv-public/2024/alice_mask.png").GetAwaiter().GetResult()), SKColors.White)
});
string json = wc.ToJson();
Console.WriteLine(json); // 可以从JSON再转换回来
WordCloud wc2 = WordCloud.FromJson(json);
File.WriteAllText($"reconstructed.svg", wc2.ToSvg());

通过这种方式,你可以灵活地将文字云存为JSON,并在需要的时候重建它。

应用遮罩的文字云

想要让文字云填充特定形状?使用遮罩,你可以轻易做到:

WordCloud wc = WordCloud.Create(new WordCloudOptions(900, 900, MakeDemoScore())
{
FontManager = new FontManager([SKTypeface.FromFamilyName("Times New Roman")]),
Mask = MaskOptions.CreateWithForegroundColor(SKBitmap.Decode(new HttpClient().GetByteArrayAsync("https://io.starworks.cc:88/cv-public/2024/alice_mask.png").GetAwaiter().GetResult()), SKColors.White)
});
byte[] pngBytes = wc.ToSKBitmap().Encode(SKEncodedImageFormat.Png, 100).AsSpan().ToArray();
File.WriteAllBytes($"mask.png", pngBytes);

这样,单词将被巧妙地分布在指定的形状中,就像这个示例中的Alice蒙面形象。

使用特定字体的文字云

通过指定字体,你可以制作出符合品牌形象或主题风格的文字云:

WordCloud wc = WordCloud.Create(new WordCloudOptions(600, 600, MakeDemoScore())
{
FontManager = new FontManager([SKTypeface.FromFamilyName("Consolas")])
});
byte[] pngBytes = wc.ToSKBitmap().Encode(SKEncodedImageFormat.Png, 100).AsSpan().ToArray();
File.WriteAllBytes($"specified-font.png", pngBytes);

选择合适的字体,你的文字云不仅能传递信息,还能提升视觉效果。

生成SVG输出

对于需要可扩展图形的Web应用程序,可以直接产出SVG格式:

WordCloud wc = WordCloud.Create(new WordCloudOptions(900, 900, MakeDemoScore())
{
FontManager = new FontManager([SKTypeface.FromFamilyName("Consolas")])
});
File.WriteAllText($"out.svg", wc.ToSvg());

SVG格式保证了无论图片放大到何种程度,文字云总是清晰可见。

共享、开放、优化

Sdcb.WordCloud 2.0的每个功能示例,都使用了同一套共享的词频列表,这充分展示了其数据驱动的设计理念。同时,Sdcb.WordCloud 2.0的开源本质,意味着它能够随着社区的努力而不断优化和增强。我们所致力的,不仅仅是造福.NET社区,更是为了推动软件开发的整个生态系统向前发展。

让.NET的世界因你我而更精彩,我期待在我的项目Github页面https://github.com/sdcb/Sdcb.WordCloud上看到你的身影,无论是提出建议,还是贡献代码,或是简单地给这个项目加星,每一点力量都将成为这个项目发展的推动力。

最后,通过这篇文章,你不仅得以窥见Sdcb.WordCloud 2.0的魅力,也一窥.NET技术的潜力。我坚信,无论是文字的艺术,还是代码的力量,我们都能共同塑造一个更为美好的数字世界。欢迎加入我的.NET技术交流QQ群:495782587,一起探讨.NET编程的奥秘和魅力。期待你的加入!

点亮.NET的文字云艺术之光——Sdcb.WordCloud 2.0的更多相关文章

  1. Canvas 3D球形文字云动画特效

    Canvas 3D球形文字云动画特效 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器 ...

  2. golang实现文字云算法

    golang实现文字云算法 项目链接 https://github.com/bangbaoshi/wordcloud 效果图 测试步骤如下 git clone https://github.com/b ...

  3. python 在线生成文字云

    在线生成文字云 在线生成文字云地址  http://a.leechg.com:8080/wordcloud 效果图 大体步骤 1 接收请求中的文本,通过结巴分词处理文本. seg_generator ...

  4. 2019 GNTC 阿里云参会分享:云原生SDWAN网络2.0 一站式上云服务

    本次10/22-24 南京2019 GNTC大会上,阿里云网络云原生SDWAN网络2.0 由于独特的云原生定位.创新的解决方案,及成熟的应用案例.行业用户,获得行业媒体C114中国通信网.产业专家高度 ...

  5. 为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!

    2019年5月29日15时,阿里云RDS for MySQL 8.0正式上线,使得阿里云成为紧跟社区步伐,发布MySQL最新版本的云厂商.RDS for MySQL 8.0 产品是阿里云推出的 MyS ...

  6. 云萌 V2.6.3.0 win10,win11 Windows永久激活工具

    Windows如果一直不激活,其实用起来问题也不大,除了无法修改壁纸.颜色.锁屏.主题以及无法使用微软账号的同步功能等之外,绝大多数的基本功能都可以正常使用.不过该激活还是得激活的.别的不说,就桌面右 ...

  7. iUAP云运维平台v3.0全面支持基于K8s的微服务架构

    什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...

  8. 云计算之路-阿里云上:原来“黑色0.1秒”发生在socket读取数据时

    在昨天的博文(云计算之路-阿里云上:读取缓存时的“黑色0.1秒”)中我们犯了一个很低级的错误——把13ms算成了130ms(感谢陈硕发现这个错误!),从而对问题的原因作出了错误的推断,望大家谅解! 从 ...

  9. python学习_新闻联播文字版爬虫(V 1.0版)

    python3的爬虫练习,爬取的是新闻联播文字版网站 #!/usr/bin/env python # -*- coding: utf-8 -*- ''' __author__ = 'wyf349' _ ...

  10. 为数据计算提供强力引擎,阿里云文件存储HDFS v1.0公测发布

    在2019年3月的北京云栖峰会上,阿里云正式推出全球首个云原生HDFS存储服务—文件存储HDFS,为数据分析业务在云上提供可线性扩展的吞吐能力和免运维的快速弹性伸缩能力,降低用户TCO.阿里云文件存储 ...

随机推荐

  1. P1725-DP【绿】

    这道题最开始我用记搜写的,然后WA了一些点,后来看了半天才发现是数组开小了,原来他给了两个数据范围,一个是60%数据的数据范围,另一个是100%数据的数据范围.我没仔细看,没看见后面那行,把60%数据 ...

  2. Redis 集群模式搭建

    本文为博主原创,未经允许不得转载: 目录: 1. 哨兵模式与集群模式对比 2. Redis 集群架构搭建 3. 集群原理分析 4. 集群元数据维护方式对比 5. redis 分布式寻址 6. 集群选举 ...

  3. 使用ProjectQ生成量子算法指令集

    技术背景 所谓的指令集,按照字面意思来理解就是计算机底层允许使用的操作指令的集合.在量子计算机领域,由于实现方案的不同,在不同的体系内的指令集其实是不一样的,并不是说OpenQASM里面的所有指令都会 ...

  4. [转帖]ORACLE新参数MAX_IDLE_TIME和MAX_IDLE_BLOCKING_TIME简介

    https://www.cnblogs.com/kerrycode/p/16856171.html Oracle 12.2 引入了新参数MAX_IDLE_TIME.它可以指定会话空闲的最大分钟数.如果 ...

  5. [转帖]linux下查看内存频率,内核函数,cpu频率

    https://www.cnblogs.com/lovesKey/p/10900501.html 查看CPU: cat /proc/cpuinfo # 总核数 = 物理CPU个数 X 每颗物理CPU的 ...

  6. [转帖]TiDB Control 使用说明

    https://docs.pingcap.com/zh/tidb/stable/tidb-control TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多用于调试 ...

  7. [转帖]Nginx 反向代理解决跨域问题

    https://juejin.cn/post/6995374680114741279 编写代码两分钟,解决跨域两小时,我吐了. 如果对跨域还不了解的朋友,可以看这篇:[基础]HTTP.TCP/IP 协 ...

  8. [转帖] Jmeter学习笔记(七)——监听器元件之察看结果树

    https://www.cnblogs.com/pachongshangdexuebi/p/11507289.html 在jmeter中,如果我们需要查看请求结果就需要添加查看结果树,这个监听器元件有 ...

  9. [转帖]【测试】 FIO:ceph/磁盘IO测试工具 fio(iodepth深度)

    目录 随看随用 NAS文件系统测试 块系统测试 FIO用法 FIO介绍 FIO 工具常用参数: FIO结果说明 I/O 的重放('录'下实际工况的IO,用fio'重放') fio工作参数可以写入配置文 ...

  10. [转帖]微服务集成skywalking实现全链路日志追踪方案

    目录 1.安装部署skywalking 1.1 环境准备 1.2 部署步骤 2.微服务整合skywalking实现链路监控 2.1 下载skywalking官方版本 2.2 将微服务引入skywalk ...