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文件格式的更多相关文章

  1. Python解析Xmind工具

    使用Xmind写用例 使用Python解析Xmind,统计用例个数 代码: from xmindparser import xmind_to_dict import tkinter as tk fro ...

  2. 用Python解析XMind

    本文来自网易云社区 作者:孙圣翔 转自:http://shengxiang.me/article/35/python-parse-xmind.html XMind是画思维脑图很好的工具,正好组里有个需 ...

  3. 时序数据库 Apache-IoTDB 源码解析之文件格式简介(三)

    上一章聊到在车联网或物联网中对数据库的需求,以及 IoTDB 的整体架构,详情请见: 时序数据库 Apache-IoTDB 源码解析之系统架构(二) 打一波广告,欢迎大家访问IoTDB 仓库,求一波 ...

  4. 提效工具-python解析xmind文件及xmind用例统计

    现状 每个公司都有一个维护测试case的系统,有自研的也有买的,比如QC, 禅道等等,QA往往习惯使用xmind等思维导图工具来编写测试用例,因为思路清晰,编写方便,那么这就有一个问题,大多公司要求所 ...

  5. MFC里面解析json文件格式

    CString strTemp; //CString ->string; string stringMsg = (LPCSTR)(CStringA)strTemp; //string -> ...

  6. 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, ...

  7. Dotnet文件格式解析

    0x0.序 解析过程并没有介绍对pe结构的相关解析过程,网上此类相关资料很多可自行查阅,本文只介绍了网上资料较少的从pe结构的可选头中的数据目录表中获取dotnet目录的rva和size,到完全解析d ...

  8. wav音频文件格式解析【个人笔记】(自用)

    1. WAV格式 wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,相对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些.. 支持多种音频数字,取样频率和声道, ...

  9. mp4文件格式解析(转)

    mp4文件格式解析 MP4文件格式带数据详解 MP4文件格式的解析,以及MP4文件的分割算法

随机推荐

  1. 20181019-JSP 教程/简介

    JSP 教程 这是第一篇JSP JSP与PHP.ASP.ASP.NET等语言类似,运行在服务端的语言. JSP(全称Java Server Pages)是由Sun Microsystems公司倡导和许 ...

  2. [BZOJ2038]:[2009国家集训队]小Z的袜子(hose)(离线莫队)

    题目传送门 题目描述 作为一个生活散漫的人,小$Z$每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小$Z$把这 ...

  3. android 后台运行service实现和后台的持续交互

    在项目中有这么一种需求 需要后台开启服务,时刻记录用户和软件的交互行为,一旦交互发生,就向服务器测发送一条消息 解决方案: 一.创建一个service服务类 在service中开启一个线程,servi ...

  4. C\C++语言中的宏多重展开和递归展开

    宏定义中的#,## 1. 宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组     2.记号粘贴操作符(token paste operator): ##            “## ...

  5. sqlite时间类型

    SQLite分页显示:Select * From news order by id desc Limit 10 Offset 10这篇文章是根据 SQLite 官方 WIKI 里的内容翻译,如果有什么 ...

  6. LinkedHashSet 源码分析

    LinkedHashSet 1)底层由 LinkedHashMap 支持的 Set 接口实现,该 Set 中的元素具有可预知的迭代顺序. 创建实例 /** * 构造一个新的空 set,其底层 Link ...

  7. 自动化生成 Openstack 新项目开发框架

    目录 目录 前言 环境 openstack-project-generator 前言 Openstack Developer 应该都知道, 开发一个 Openstack 的新项目并不是一个从 0 到 ...

  8. javaweb学习总结(十)——HttpServletRequest对象(一) https://www.cnblogs.com/xdp-gacl/p/3798347.html

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  9. How to use Nlog for ASP.NET Core with csproj

    1. Add dependency in csproj manually or using NuGet Install the latest: NLog.Web.AspNetCore 4.5+ Upd ...

  10. K近邻实战手写数字识别

    1.导包 import numpy as np import operator from os import listdir from sklearn.neighbors import KNeighb ...