原文:将指定路径下的所有SVG文件导出成PNG等格式的图片(缩略图或原图大小)

WPF的XAML文档(Main.xaml):

<Window x:Class="SVG2Image.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:SVG2Image"
        mc:Ignorable="d" Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="388,21,0,0" VerticalAlignment="Top"
                Width="103" Click="button_Click" Height="23" />
        <Label x:Name="label" Content="尺寸" HorizontalAlignment="Left" Margin="54,21,0,0" VerticalAlignment="Top" />
        <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="100,21,0,0" TextWrapping="Wrap"
                Text="128,64,32,16" VerticalAlignment="Top" Width="272" />
    </Grid>
</Window>

CS代码:(Main.xaml.cs)

using Svg;
using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace SVG2Image
{
    /// <summary>
    /// 将指定路径下的所有SVG文件导出成PNG等格式的图片(缩略图或原图大小)
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        string savePath = @"d:\output";
        string svgFilePath = @"E:\SVG";
        private void button_Click(object sender, RoutedEventArgs e)
        {
            string sizeText = textBox.Text;
            if (string.IsNullOrEmpty(sizeText)) sizeText = "64"; //默认64像素大小
            string[] sizeArray = sizeText.Split(',');
            List<int> listSize = new List<int>();
            try
            {
                foreach (string s in sizeArray)
                {
                    listSize.Add(int.Parse(s));
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show("输入的尺寸有误,必须为数字(多组用逗号隔开);\r\n" + exc.ToString());
                return;
            }

if (!Directory.Exists(savePath))
            {
                Directory.CreateDirectory(savePath);
            }
            string[] arraySvgFiles = Directory.GetFiles(svgFilePath, "*.svg");
            foreach (string file in arraySvgFiles)
            {
                string fileName = System.IO.Path.GetFileNameWithoutExtension(file);
                try
                {
                    string svgFileContents = File.ReadAllText(file, Encoding.UTF8);
                    var byteArray = Encoding.ASCII.GetBytes(svgFileContents);
                    string saveFileName = savePath + @"\" + fileName + @"{0}_{1}.png";
                    foreach (int sz in listSize)
                    {
                        using (var stream = new MemoryStream(byteArray))
                        {
                            var svgDocument = SvgDocument.Open(stream);
                            svgDocument.Width = sz;
                            svgDocument.Height = sz;
                            var bitmap = svgDocument.Draw();
                            bitmap.Save(string.Format(saveFileName, sz, sz), ImageFormat.Png);
                        }
                    }
                }
                catch (Exception exc)
                {
                    using (System.IO.StreamWriter sw = new System.IO.StreamWriter(savePath + @"\error.txt", true))
                    {
                        sw.WriteLine(fileName);// 直接追加文件末尾,换行
                    }
                }
            }
        }
    }
}

将指定路径下的所有SVG文件导出成PNG等格式的图片(缩略图或原图大小)相关推荐

  1. R语言使用fs包的dir_create函数在指定路径下创建新的文件夹、使用file_create函数在指定文件夹下创建文件

    R语言使用fs包的dir_create函数在指定路径下创建新的文件夹.使用file_create函数在指定文件夹下创建文件 目录

  2. C#取得指定路径下所有目录及文件名称(可递归)

     1using System.IO;  2  3/**//// <summary>  4/// 取得指定路径下所有目录及文件名称(可递归)  5/// </summary>   ...

  3. 用python将指定目录下的所有json文件合并成一个csv文件

    #!/usr/bin/env python # -*- encoding: utf-8 -*-import sys import json import os import pandas as pd ...

  4. everything搜索指定路径下的多个文件

    路径\  文件1 | 文件2 转载于:https://www.cnblogs.com/Stephen-Qin/p/9843962.html

  5. python3查找文件中指定字符串_Python3在指定路径下递归定位文件中出现的字符串...

    [本文出自天外归云的博客园] 脚本功能:在指定的路径下递归搜索,找出指定字符串在文件中出现的位置(行信息). 用到的python特性: 代码如下: import os import sys __all ...

  6. Winform中实现FTP客户端并定时扫描指定路径下文件上传到FTP服务端然后删除文件

    场景 Windows10上怎样开启FTP服务: Windows10上怎样开启FTP服务_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面在Windows上搭建FTP服务器之后,会接收客 ...

  7. 删除指定路径下的文件

    string pathstr = System.Web.HttpContext.Current.Server.MapPath("/FilePath"); if (Directory ...

  8. 加载指定路径下所有文件

    工作中经常遇到加载某个文件夹下的所有文件,然后对文件遍历,今天写代码时遇到一个好的类ArrayDeque,整理一下,做一下笔记 下面写了一个测试类 package com.hpzx.test;impo ...

  9. python创建文件夹用什么函数_Python——os.mkdir()在指定路径下创建文件夹 + 路径的连接理解...

    Python--os.mkdir()在指定路径下创建文件夹 + 路径的连接理解 发布时间:2018-11-16 17:08, 浏览次数:512 , 标签: Python os mkdir 引子: 我在 ...

最新文章

  1. 自然科学期刊能发表计算机论文吗,自然科学专业论文好发表吗?
  2. java开发编程周末班_今天,Java编程周末提高班(第一期)正式结束
  3. cocos2d-x 2.0启用HD高清图片支持
  4. linux命令简单汇总,直通车
  5. 微型激光投影廉价版本
  6. 基于脑电和特征加权阶段训练的驾驶员疲劳状态估计
  7. python数据挖掘资料
  8. 论文创新,可以看看这几篇去雨文章是怎么做的
  9. Notice of the completion of the blog migration
  10. 怎样对java网站进行简单修改_用Java写一个简单的毕业设计,功能就增删改查的一些基本功能就可以,需要哪些技术?...
  11. 学习笔记(十一)——数据库的索引碎片、计划缓存、统计信息
  12. win10下mount挂载文件 samba cifs
  13. 深度 || 既然C编译器是C语言写的,那么第一个C编译器是怎样来的?
  14. 帮写python代码_10个工具,帮你写出更好的Python代码
  15. 录音整理文字工具otranscribe简介
  16. 计算机打字比赛海报图,打字比赛宣传海报图片
  17. J2EE框架(四)核心设计模式
  18. 旅馆业等领域旅客入住身份核验解决方案
  19. 23 - OAI NSA gNB搭建 - 博一
  20. 阿里云商标智能注册申请图文教程(亲踩坑)

热门文章

  1. cytoscape插件下载_Cytoscape
  2. c 语言for 循环大到小,C语言中for循环问题(一个小坑需注意)
  3. c 调用c语言头文件,混合使用C、C++和汇编语之:在C++中使用C头文件-嵌入式系统-与非网...
  4. find 命令_除了 find,还有这些文件查找命令
  5. vnpy怎么创建策略并回测_基于vnpy、rqdata的回测打通历程
  6. redis高级用法:geo位置相关信息
  7. var radioname = new array();_体坛观察丨争议判罚不止中超 为何VAR屡成足坛焦点?_足球...
  8. java中long如何使用_在Java中如何使用lambda和方法引用实现LongSupplier?
  9. 汽车租赁php参考文献,国内外汽车租赁文献综述
  10. mysql Subqueries