使用C#解析XMIND文件格式
static void Main(string[] args)
{
var tempPath = @"c:\Temp"; if (Directory.Exists(tempPath))
{
Directory.Delete(tempPath,true);
}
Directory.CreateDirectory(tempPath); ZipFile.ExtractToDirectory(@"c:\test.xmind", tempPath); //缩略图地址
var thumbPath = tempPath + "\\Thumbnails\\thumbnail.png";
var targetThumbPath = tempPath + "\\Thumbnails\\160X120.png";
var fi=new FileInfo(targetThumbPath);
if (fi.Exists)
{
fi.IsReadOnly = false;
fi.Delete();
}
int width;
int height;
ThumbImage.GetMicroImage(thumbPath, targetThumbPath, , , out width, out height);
Console.WriteLine("缩略图:"+ targetThumbPath);
Console.WriteLine("预览图:" + thumbPath + " 原图宽:" + width + ",原图高:" + height);
//附件
var attachmentsPath = new DirectoryInfo(tempPath + "\\attachments");
var count = ;
foreach (var o in attachmentsPath.GetFiles())
{
count++;
Console.WriteLine("附件"+count+" : "+o.Name);
} Console.WriteLine("成功!");
Console.ReadKey();
}
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging; namespace ConsoleApplication2
{
internal class ThumbImage
{
/// <summary>
/// 高质量缩放图片
/// </summary>
/// <param name="originFilePath">源图的路径</param>
/// <param name="targetFilePath">存储缩略图的路径</param>
/// <param name="destWidth">缩放后图片宽度</param>
/// <param name="destHeight">缩放后图片高度</param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <returns>表明此次操作是否成功</returns>
public static bool GetMicroImage(string originFilePath, string targetFilePath, int destWidth, int destHeight,
out int width, out int height)
{
width = ;
height = ;
try
{
using (Image imgSource = new Bitmap(originFilePath))
{
width = imgSource.Width;
height = imgSource.Height;
//System.Drawing.Image imgSource = b;
int sW = , sH = ;
// 按比例缩放
var sWidth = imgSource.Width;
var sHeight = imgSource.Height;
if (sHeight > destHeight || sWidth > destWidth)
{
if ((sWidth*destHeight) > (sHeight*destWidth))
{
sW = destWidth;
sH = (destWidth*sHeight)/sWidth;
}
else
{
sH = destHeight;
sW = (sWidth*destHeight)/sHeight;
}
}
else
{
sW = sWidth;
sH = sHeight;
}
var outBmp = new Bitmap(destWidth, destHeight);
var g = Graphics.FromImage(outBmp);
g.Clear(Color.Transparent);
// 设置画布的描绘质量
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(imgSource, new Rectangle((destWidth - sW)/, (destHeight - sH)/, sW, sH), , ,
imgSource.Width, imgSource.Height, GraphicsUnit.Pixel);
g.Dispose();
// 以下代码为保存图片时,设置压缩质量
var encoderParams = new EncoderParameters();
var quality = new long[];
quality[] = ;
var encoderParam = new EncoderParameter(Encoder.Quality, quality);
encoderParams.Param[] = encoderParam;
outBmp.Save(targetFilePath);
outBmp.Dispose();
}
//压缩一下PNG图
//CompressPng(targetFilePath, targetFilePath); return true;
}
catch (Exception)
{
return false;
}
}
}
}
使用C#解析XMIND文件格式的更多相关文章
- Python解析Xmind工具
使用Xmind写用例 使用Python解析Xmind,统计用例个数 代码: from xmindparser import xmind_to_dict import tkinter as tk fro ...
- 用Python解析XMind
本文来自网易云社区 作者:孙圣翔 转自:http://shengxiang.me/article/35/python-parse-xmind.html XMind是画思维脑图很好的工具,正好组里有个需 ...
- 时序数据库 Apache-IoTDB 源码解析之文件格式简介(三)
上一章聊到在车联网或物联网中对数据库的需求,以及 IoTDB 的整体架构,详情请见: 时序数据库 Apache-IoTDB 源码解析之系统架构(二) 打一波广告,欢迎大家访问IoTDB 仓库,求一波 ...
- 提效工具-python解析xmind文件及xmind用例统计
现状 每个公司都有一个维护测试case的系统,有自研的也有买的,比如QC, 禅道等等,QA往往习惯使用xmind等思维导图工具来编写测试用例,因为思路清晰,编写方便,那么这就有一个问题,大多公司要求所 ...
- MFC里面解析json文件格式
CString strTemp; //CString ->string; string stringMsg = (LPCSTR)(CStringA)strTemp; //string -> ...
- python 解析top文件格式
top - 16:14:35 up 2 days, 3:04, 7 users, load average: 2.22, 1.84, 1.77 Tasks: 512 total, 2 running, ...
- Dotnet文件格式解析
0x0.序 解析过程并没有介绍对pe结构的相关解析过程,网上此类相关资料很多可自行查阅,本文只介绍了网上资料较少的从pe结构的可选头中的数据目录表中获取dotnet目录的rva和size,到完全解析d ...
- wav音频文件格式解析【个人笔记】(自用)
1. WAV格式 wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,相对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些.. 支持多种音频数字,取样频率和声道, ...
- mp4文件格式解析(转)
mp4文件格式解析 MP4文件格式带数据详解 MP4文件格式的解析,以及MP4文件的分割算法
随机推荐
- Internet History, Technology, and Security(week3)——History: The Web Makes it Easy to Use
前言: 上周学习了第一个网络NSFnet,美国国家科学基金会(National Science Foundation,简称NSF)在全美国建立了6个超级计算机中心所互联的一个网络,这周继续学习网络的发 ...
- #1122 JSP动作元素
JSP动作元素 与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用.JSP动作元素是用XML语法写成的. 利用JSP动作可以动态地插入文件.重用JavaBean组件.把用户重定向到另外的页面 ...
- 电脑新安装JDK版本并运行使用该JDK版本问题
情景:电脑上已正常安装一个jdk版本,如:1.7.0_71,因考虑到一些情况,现需要使用版本为1.7.0_80(1.8),故需新安装JDK,并使服务可以运行使用新安装的JDK版本. 网络找寻方法: ( ...
- [CSP-S模拟测试]:购物(柯朵莉树)
题目描述 $visit_world$有一个商店,商店里卖$N$个商品,第$i$个的价格为$a[i]$我们称一个正整数$K$是美妙的,当且仅当我们可以在商店里选购若干个商品,使得价格之和落在区间$[K, ...
- 《Vue前端开发手册》
序言 为了统一前端的技术栈问题,技术开发二部规定开发技术必须以Vue为主. 为了更好的规范公司的前端框架,现以我前端架构师为主,编写以下开发规范,如有不当的地方,欢迎批评教育并慢慢改善该开发文档,谢谢 ...
- C#配置IIS站点
一.源码特点 1. 一些基于ASP.NET应用产品,在用户环境中都无可避免的涉及到部署到目标环境的应用服务器上,而配置站点是此过程的核心步骤,此源码对过程进行了高度封装,从创建IIS所需 ...
- 职位-CIO:CIO
ylbtech-职位-CIO:CIO 首席信息官(又称CIO,是Chief Information Officer的缩写)中文意思是首席信息官或信息主管,是负责一个公司信息技术和系统所有领域的高级官员 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_07 Collections工具类_2_Collections集合工具类的方法
默认规则一般都是升序排序 再来创建一个字符串的数组 排序后,按照升序输出结果 自定义类型排序 创建一个Person类,getter和setter 有参构造和无参构造 重写toString的方法 传对象 ...
- 如何在idea中查看jar包源码
文章目录 准备jar包 idea打开文件夹 最后一步 准备jar包 例如,我准备看resin的jar,在桌面准备了一份 idea打开文件夹 在idea中file====>open=====> ...
- JS-在本页面禁止页面返回
这个问题是最近遇到的 解决方案我百度的并测试有效 // 如果你希望用户不用有返回功能 可缩写如下 或使用location.replace('url')跳转链接 history.pushState(nu ...