markus / KCOM / Common / Converter / SvgConverter.cs @ a4e5d148
이력 | 보기 | 이력해설 | 다운로드 (4.27 KB)
1 | a74e3cbc | ljiyeon | 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 | c73426a9 | ljiyeon | 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 | a74e3cbc | ljiyeon | |
23 | c73426a9 | ljiyeon | GC.Collect(); |
24 | System.Drawing.Bitmap image; |
||
25 | a74e3cbc | ljiyeon | |
26 | c73426a9 | ljiyeon | if (defaultBitmapImage.IsDownloading) |
27 | a74e3cbc | ljiyeon | { |
28 | c73426a9 | ljiyeon | defaultBitmapImage.DownloadCompleted += (ex, arg) => |
29 | { |
||
30 | defaultBitmapImage.Freeze(); |
||
31 | GC.Collect(); |
||
32 | a74e3cbc | ljiyeon | |
33 | c73426a9 | ljiyeon | image = GetBitmap(defaultBitmapImage); |
34 | a74e3cbc | ljiyeon | |
35 | c73426a9 | ljiyeon | image.Save(@AppDomain.CurrentDomain.BaseDirectory + "potrace.bmp", System.Drawing.Imaging.ImageFormat.Bmp); |
36 | a74e3cbc | ljiyeon | |
37 | c73426a9 | ljiyeon | Process potrace = new Process |
38 | a74e3cbc | ljiyeon | { |
39 | c73426a9 | ljiyeon | 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 | a74e3cbc | ljiyeon | |
60 | c73426a9 | ljiyeon | StringBuilder svgBuilder = new StringBuilder(); |
61 | potrace.OutputDataReceived += (object sender2, DataReceivedEventArgs e2) => |
||
62 | { |
||
63 | svgBuilder.AppendLine(e2.Data); |
||
64 | }; |
||
65 | |||
66 | potrace.Start(); |
||
67 | a74e3cbc | ljiyeon | |
68 | |||
69 | c73426a9 | ljiyeon | 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 | a74e3cbc | ljiyeon | |
73 | c73426a9 | ljiyeon | Check_Uri.UriCheck(fileurl); |
74 | }; |
||
75 | } |
||
76 | } |
||
77 | catch (Exception ex) |
||
78 | { |
||
79 | Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.DialogMessage_Alert("" + ex, "Alert"); |
||
80 | a74e3cbc | ljiyeon | } |
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 | } |