1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using System;
- using System.Drawing;
- using System.Drawing.Imaging;
- using System.IO;
- namespace HTEXLib.DOCX.OpenXmlTool
- {
- public class WmfToPng
- {
- public static Stream Convert1(Stream stream)
- {
- var img = new Metafile(stream);
- Console.WriteLine("width=" + img.Width + ";height=" + img.Height);
- var header = img.GetMetafileHeader();
- var scale = header.DpiX / 96f;
- // 设置缩放倍数
- var multiple = SmartMultiple(img.Width);
- var bitmap = new Bitmap(img.Width * multiple, img.Height * multiple);
- var g = Graphics.FromImage(bitmap);
- g.Clear(Color.White);
- g.ScaleTransform(scale * multiple, scale * multiple);
- g.DrawImage(img, 0, 0);
- g.Dispose();
- Stream outStream = new MemoryStream();
- bitmap.Save(outStream, ImageFormat.Png);
- return outStream;
- }
- public static Stream Convert(Stream stream)
- {
- var img = new Metafile(stream);
- var header = img.GetMetafileHeader();
- var scale = header.DpiX / 96f;
- // 设置缩放倍数
- var multiple = SmartMultiple(img.Width);
- var bitmap = new Bitmap(img.Width * multiple, img.Height * multiple);
- var g = Graphics.FromImage(bitmap);
- g.DrawImageUnscaled(img, 0, 0);
- //g.Clear(Color.White);
- //g.ScaleTransform(scale * multiple, scale * multiple);
- //g.DrawImage(img, 0, 0);
- g.Dispose();
- Stream outStream = new MemoryStream();
- bitmap.Save(outStream, ImageFormat.Png);
- return outStream;
- }
- /**
- * 根据wmf文件本身的尺寸,获取缩放倍数
- */
- private static int SmartMultiple(int width)
- {
- var multiple = 1;
- if (width < 100)
- multiple = 10;
- else if (width < 200) multiple = 5;
- return multiple;
- }
- }
- }
|