프로젝트

일반

사용자정보

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

markus / KCOM / Common / Converter / SvgConverter.cs @ 90e7968d

이력 | 보기 | 이력해설 | 다운로드 (3.84 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 DOCUMENT_ITEM _DocItem;
13

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