其实只是做了简单封装,可以方便进行批量转换.

DrawingColor方法是进行颜色填充的.

/// 
/// svg文件转换为图片
/// 
/// svg内容
/// svg文件
/// 图片类型
/// 转换成功后的文件路径
public string SvgToImage(string outputDir, string svgContent = "", string svgFile = "", ImageType imgType = ImageType.Png)
{
var fileInfo = new FileInfo(svgFile);
string fileName = fileInfo.Name.Split('.')[];
HtmlAgilityPack.HtmlDocument document;
if (svgContent.Length > )
{
document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(svgContent);
}
else
{
document = this.LoadDocumentFormFile(svgFile);
}
//初始化Svg对象
SvgObject so = new SvgObject(document.DocumentNode.WriteTo());
//获取Svg坐标对象集合
Dictionary dictPosition = so.GetSvgObjectPositions();
//进行颜色填充,返回新的Svg文档
document = DrawingColor(ref document, dictPosition);
//保存
document.Save(svgFile, Encoding.Default);
string pngFileName = Path.Combine(outputDir, fileName + ".png");
//设置命令行参数,详情见该软件帮助文档.
//string inkscapeArgs = string.Format("-f {0} -e {1} -b {2}\"", svgFile, pngFileName, "#000000");
string inkscapeArgs = string.Format("inkscape {0} --export-png={1} --export-background={2}", svgFile, pngFileName, "#000");
//调用 Inkscape 进行svg转图片
try
{
//是否提供了自定义路径
if (this.InkscapeApplicationPath.Length == )
this.InkscapeApplicationPath = "D:\\Program Files (x86)\\Inkscape\\inkscape.exe";
//调用本地系统进程
Process inkscape = Process.Start(new ProcessStartInfo(this.InkscapeApplicationPath, inkscapeArgs));
inkscape.WaitForExit();
}
catch (Exception)
{
return "";
}
if (!System.IO.File.Exists(pngFileName))
return "";
string imageFileName = Path.Combine(outputDir, fileName + ".$");
//最后再将png文件转换成其他格式图片文件.
Bitmap myImage = new Bitmap(pngFileName);
ImageFormat format = ImageFormat.Png;
switch (imgType)
{
case ImageType.Png:
return pngFileName;
case ImageType.Jpg:
imageFileName = imageFileName.Replace("$", "jpg");
format = ImageFormat.Jpeg;
break;
case ImageType.Bmp:
imageFileName = imageFileName.Replace("$", "bmp");
format = ImageFormat.Bmp;
break;
case ImageType.Gif:
break;
default:
break;
}
myImage.Save(imageFileName, format);
return imageFileName;
}

最终图片如下:

IOS 如何使用SVG格式的图片 svg文档如何设置为图片_IOS 如何使用SVG格式的图片

保证两两相邻的人物填充颜色不重复.用的算法是简单的四边形是否重叠的算法.

Inkscape下载地址:

这是一个免费开源的矢量图处理软件.