프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

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
}
클립보드 이미지 추가 (최대 크기: 500 MB)