markus / KCOM / Common / Converter / SvgConverter.cs @ c73426a9
이력 | 보기 | 이력해설 | 다운로드 (4.27 KB)
1 |
using KCOMDataModel.DataModel; |
---|---|
2 |
using System; |
3 |
using System.Diagnostics; |
4 |
using System.Text; |
5 |
using System.Windows; |
6 |
using System.Windows.Media.Imaging; |
7 |
|
8 |
namespace KCOM.Common.Converter |
9 |
{ |
10 |
class SvgConverter |
11 |
{ |
12 |
public void SvgConvert(string fileurl, string guid, string DOCUMENT_NO) |
13 |
{ |
14 |
try |
15 |
{ |
16 |
var defaultBitmapImage = new BitmapImage(); |
17 |
defaultBitmapImage.BeginInit(); |
18 |
defaultBitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache; |
19 |
defaultBitmapImage.CacheOption = BitmapCacheOption.OnLoad; |
20 |
defaultBitmapImage.UriSource = new Uri(fileurl); |
21 |
defaultBitmapImage.EndInit(); |
22 |
|
23 |
GC.Collect(); |
24 |
System.Drawing.Bitmap image; |
25 |
|
26 |
if (defaultBitmapImage.IsDownloading) |
27 |
{ |
28 |
defaultBitmapImage.DownloadCompleted += (ex, arg) => |
29 |
{ |
30 |
defaultBitmapImage.Freeze(); |
31 |
GC.Collect(); |
32 |
|
33 |
image = GetBitmap(defaultBitmapImage); |
34 |
|
35 |
image.Save(@AppDomain.CurrentDomain.BaseDirectory + "potrace.bmp", System.Drawing.Imaging.ImageFormat.Bmp); |
36 |
|
37 |
Process potrace = new Process |
38 |
{ |
39 |
StartInfo = new ProcessStartInfo |
40 |
{ |
41 |
//FileName = @"http://cloud.devdoftech.co.kr:5977/UserData/"+ "potrace.exe", |
42 |
FileName = @AppDomain.CurrentDomain.BaseDirectory + "potrace.exe", |
43 |
//Arguments = "-s -u 1", //SVG |
44 |
//Arguments = "- -o- --svg", |
45 |
//Arguments = filename2 + " --backend svg", |
46 |
//Arguments = @AppDomain.CurrentDomain.BaseDirectory + "potrace.bmp" + " --backend svg -i", |
47 |
//Arguments = "-b svg -i " + @AppDomain.CurrentDomain.BaseDirectory + "potrace.bmp", |
48 |
Arguments = "-b svg " + @AppDomain.CurrentDomain.BaseDirectory + "potrace.bmp", |
49 |
RedirectStandardInput = true, |
50 |
RedirectStandardOutput = true, |
51 |
//RedirectStandardError = Program.IsDebug, |
52 |
RedirectStandardError = true, |
53 |
UseShellExecute = false, |
54 |
CreateNoWindow = true, |
55 |
WindowStyle = ProcessWindowStyle.Hidden |
56 |
}, |
57 |
EnableRaisingEvents = false |
58 |
}; |
59 |
|
60 |
StringBuilder svgBuilder = new StringBuilder(); |
61 |
potrace.OutputDataReceived += (object sender2, DataReceivedEventArgs e2) => |
62 |
{ |
63 |
svgBuilder.AppendLine(e2.Data); |
64 |
}; |
65 |
|
66 |
potrace.Start(); |
67 |
|
68 |
|
69 |
byte[] bytes = System.IO.File.ReadAllBytes(@AppDomain.CurrentDomain.BaseDirectory + "potrace.bmp"); |
70 |
kr.co.devdoftech.cloud.FileUpload fileUploader = new kr.co.devdoftech.cloud.FileUpload(); |
71 |
fileurl = fileUploader.Run(App.ViewInfo.ProjectNO, DOCUMENT_NO, App.ViewInfo.UserID, guid + ".svg", bytes); |
72 |
|
73 |
Check_Uri.UriCheck(fileurl); |
74 |
}; |
75 |
} |
76 |
} |
77 |
catch (Exception ex) |
78 |
{ |
79 |
Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.DialogMessage_Alert("" + ex, "Alert"); |
80 |
} |
81 |
} |
82 |
|
83 |
System.Drawing.Bitmap GetBitmap(BitmapSource source) |
84 |
{ |
85 |
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(source.PixelWidth, source.PixelHeight, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); |
86 |
System.Drawing.Imaging.BitmapData data = bmp.LockBits(new System.Drawing.Rectangle(System.Drawing.Point.Empty, bmp.Size), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); |
87 |
source.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride); |
88 |
bmp.UnlockBits(data); |
89 |
return bmp; |
90 |
} |
91 |
} |
92 |
} |