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

点亮.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选项来轻松实现。以下展示了如何用一段简洁的代码创建五种文本方向的文字云:

csharp 复制代码
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格式,方便存储和交换:

csharp 复制代码
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,并在需要的时候重建它。

应用遮罩的文字云

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

csharp 复制代码
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蒙面形象。

使用特定字体的文字云

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

csharp 复制代码
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格式:

csharp 复制代码
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编程的奥秘和魅力。期待你的加入!

相关推荐
geobuilding1 天前
将大规模shp白模贴图转3dtiles倾斜摄影,并可单体化拾取建筑
算法·3d·智慧城市·数据可视化·贴图
小白跃升坊2 天前
数据分析报表如何选?详解 DataEase 四大表格:明细表、汇总表、透视表与热力图的适用场景与选择策略
数据挖掘·数据分析·开源软件·数据可视化·dataease
数据科学项目实践4 天前
Matplotlib 简单教程 3:坐标轴\边框设置
数据可视化
IT小哥哥呀6 天前
Python实用技巧:批量处理Excel数据并生成销售报表(含实战案例)
python·pandas·数据可视化·数据处理·报表生成·excel自动化·办公神器
大飞码农6 天前
📊 开源了一个 Git 代码统计神器,解决了团队代码量统计的 N 个痛点
git·数据可视化
西***634711 天前
怕故障?怕扩展难?分布式可视化控制:给足场景安全感
分布式·数据可视化
Aloudata技术团队12 天前
以 NoETL 指标语义层为核心:打造可信、智能的 Data Agent 产品实践
数据挖掘·数据分析·数据可视化
爱思德学术12 天前
中国计算机学会(CCF)推荐学术会议-B(数据库/数据挖掘/内容检索):PODS 2026
数据库·数据分析·数据可视化·数据库系统
Serendipity_Carl15 天前
爬虫数据清洗可视化案例之全球灾害数据
爬虫·python·pycharm·数据可视化·数据清洗
青云交15 天前
Java 大视界 -- Java 大数据在智能建筑能耗监测与节能策略制定中的应用
数据分析·数据存储·数据可视化·1024程序员节·能耗监测·java 大数据·智能建筑