markus / KCOM / Common / Converter / SvgConverter.cs @ 90e7968d
이력 | 보기 | 이력해설 | 다운로드 (3.84 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 | 90e7968d | ljiyeon | //public DOCUMENT_ITEM _DocItem; |
13 | a74e3cbc | ljiyeon | |
14 | public void SvgConvert(string fileurl, string guid, string DOCUMENT_NO) |
||
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 | svgBuilder.AppendLine(e2.Data); |
||
63 | }; |
||
64 | |||
65 | potrace.Start(); |
||
66 | |||
67 | |||
68 | byte[] bytes = System.IO.File.ReadAllBytes(@AppDomain.CurrentDomain.BaseDirectory + "potrace.bmp"); |
||
69 | kr.co.devdoftech.cloud.FileUpload fileUploader = new kr.co.devdoftech.cloud.FileUpload(); |
||
70 | fileurl = fileUploader.Run(App.ViewInfo.ProjectNO, DOCUMENT_NO, App.ViewInfo.UserID, guid + ".svg", bytes); |
||
71 | }; |
||
72 | } |
||
73 | } |
||
74 | |||
75 | System.Drawing.Bitmap GetBitmap(BitmapSource source) |
||
76 | { |
||
77 | System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(source.PixelWidth, source.PixelHeight, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); |
||
78 | 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); |
||
79 | source.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride); |
||
80 | bmp.UnlockBits(data); |
||
81 | return bmp; |
||
82 | } |
||
83 | } |
||
84 | } |