怎么给自己的网站做扫描码,python在线编程软件,苏州北京商场网站建设,网站建设域名是什么意思序一天#xff0c;作者在深圳湾吹风时突然想到自己还有 20 多位粉丝#xff0c;所以决定每周至少要水一篇文章。众所周知#xff0c;一篇文章要有封面#xff0c;正痛苦时#xff0c;.NET 官方网站更新了一大波质量上乘的插图#xff1b;高兴之余#xff0c;发觉平台不支… 序 一天作者在深圳湾吹风时突然想到自己还有 20 多位粉丝所以决定每周至少要水一篇文章。众所周知一篇文章要有封面正痛苦时.NET 官方网站更新了一大波质量上乘的插图高兴之余发觉平台不支持 SVG 图片所以有了这篇文章。不过在这里我劝各位年轻人耗自为汁不要再耍这种聪明小聪明啊互联网还是要讲版权不要搞窝里斗。介绍 首先进行简单介绍若已有了解可跳过该小节。SVG 是一种基于 XML 语法的图像格式全称是可缩放矢量图Scalable Vector Graphics。其他图像格式都是基于像素处理的SVG 则是属于对图像的形状描述所以它本质上是文本文件体积较小且不管放大多少倍都不会失真。阮一峰的网络日志《SVG 图像入门教程》http://www.ruanyifeng.com/blog/2018/08/svg.htmlPNG 是一种采用从 LZ77 派生的无损数据压缩算法的位图格式其压缩比高生成文件体积小。百度百科《PNG》https://baike.baidu.com/item/png稍微总结SVG 文本体积小、缩放不失真PNG无损、压缩比高、背景透明需要详细了解请打开上面的链接进行学习。SVG.NET 微软开源网站上有一个 SVG 项目(svg.codeplex.com)但是因为年代久远长时间没有维护并且没有发布 Nuget 包后来有组织将代码维护到了 GitHub(github.com/vvvv/SVG)沿用了微软的协议(MS-PL)并且发布了 Nuget 包使用非常简单PM Install-Package Svg
var svg SvgDocument.Open(dotnet.svg);
Bitmap image svg.Draw();
image.Save(dotnet.png);
上述代码中调用 Draw 方法绘制图片时没有设置宽高所以会使用 SVG 文档中默认的宽高这样转换出来的图片分辨率可能会略低可以按照原有比例进行放大var svg SvgDocument.Open(dotnet.svg);float width svg.ViewBox.Width * 4;
float height svg.ViewBox.Height * 4;Bitmap image svg.Draw((int)width, (int)height);
image.Save(dotnet.png);
顺便提一下该包以及其依赖包会涉及到多种开源协议MIT、MS-PL、LGPL主要说明一下 MS-PL 和 LGPL都可以作为类库引用到商业软件中。到此SVG 转换为 PNG 已经完成如果需要继续了解 .NET 工具包制作请继续往下。工具包制作 .NET Core 工具是一种特殊的 NuGet 包其中包含控制台应用程序。微软官方文档《管理工具》https://aka.ms/global-tools即可以通过命令 dotnet tool 进行工具的安装/卸载/管理详情请阅读官方教程。首先我们选择一个包来简化程序参数解析等处理过程PM Install-Package McMaster.Extensions.CommandLineUtils
该程序也是之前一直在微软内部作为共享代码使用然后作为 extensions 产品的一部分发布成了 Nuget 包但是后来放弃并邀请社区维护社区接力后添加了很多诸如依赖注入等有趣的功能现微软推荐大家使用该社区维护版本。深度使用请阅读其 GitHub 上的 Readme。首先我们定义需要接收的数据SVG 目录、PNG 目录、放大倍数internal interface IOptions
{public string SvgDir { get; set; }public string PngDir { get; set; }public int Enlarge { get; set; }
}
然后编写 Command 类CommandLineUtils 会根据该类生成帮助文档以及接收并处理用户输入internal class Command : IOptions
{[Option(Description SVG 图片目录)]public string SvgDir { get; set; }[Option(Description PNG 图片目录)]public string PngDir { get; set; }[Option(Description 放大倍数)]public int Enlarge { get; set; }public void OnExecute(){Handler handler new(){Options this,};handler.Handle();}
}
最后在 Program.cs 中将 CommandLineUtils 对接到程序入口using McMaster.Extensions.CommandLineUtils;CommandLineApplication.ExecuteCommand(args);
至此该工具的主要流程已完成但是要真正运行还需要编写 Command 中调用的 Handler 类该类主要逻辑是将 SVG 转为 PNG上述章节已有讲解其整个类还有其他文件操作、异常处理代码全部列出会占用较多篇幅不想动手的同学可以直接点击文章尾部的 原文链接 到 GitHub 下载源代码。最后制作工具包还需要在项目文件中配置PackAsTooltrue/PackAsTool
ToolCommandNamesvg2png/ToolCommandName
将编译生成的 Nuget 包发布到 nuget.org 中过程略。使用 svg2png 安装 svg2pngPS dotnet tool install -g svg2png
查看帮助PS svg2png -h
Usage: svg2png [options]Options:-s|--svg-dir SVG_DIR SVG 图片目录-p|--png-dir PNG_DIR PNG 图片目录-e|--enlarge ENLARGE 放大倍数-?|-h|--help Show help information
转换PS svg2png -s E:\svg2png -p E:\output -e 4
END祝编码愉快。