Beispiel #1
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            _Log.WriteInfoHightligh("App started");

            if (e?.Args != null && e.Args.Length != 0)
            {
                if (e.Args.Length != 3)
                {
                    _Log.WriteException("3 arguments are required");
                    _Log.WriteException("INPUT_FOLDER INPUT_WATERMARK_IMAGE OUTPUT_FOLDER");
                    Current.Shutdown();

                    return;
                }

                var inputFolder  = e.Args[0];
                var inputWater   = e.Args[1];
                var outputFolder = e.Args[2];

                Watermark.MarkImages(inputFolder, inputWater, outputFolder);

                _Log.WriteInfo("Closing app");
                Current.Shutdown();
            }
            else
            {
                var mainWindow = new MainWindow();
                mainWindow.Show();
                mainWindow.Closed += MainWindow_Closed;
            }
        }
Beispiel #2
0
        private void _BtnWork_Click(object sender, RoutedEventArgs e)
        {
            string inputFolder  = _TxtInputFolder.Text;
            string inputWater   = _TxtInputWater.Text;
            string outputFolder = _TxtOutputFolder.Text;

            if (string.IsNullOrEmpty(inputFolder))
            {
                _Log.WriteException($"Input folder not valid");
                return;
            }
            if (string.IsNullOrEmpty(inputWater))
            {
                _Log.WriteException($"Input watermark not valid");
                return;
            }
            if (string.IsNullOrEmpty(outputFolder))
            {
                _Log.WriteException($"Output folder not valid");
                return;
            }

            try
            {
                inputFolder  = Path.GetFullPath(inputFolder);
                inputWater   = Path.GetFullPath(inputWater);
                outputFolder = Path.GetFullPath(outputFolder);

                _TxtInputFolder.Text  = inputFolder;
                _TxtInputWater.Text   = inputWater;
                _TxtOutputFolder.Text = outputFolder;
            }
            catch (System.Exception exception)
            {
                _Log.WriteException(exception);
                return;
            }

            if (_TxtWaterScale.Text.Length != 0)
            {
                _TxtWaterScale.Text = _TxtWaterScale.Text.Replace(',', '.');
            }

            double waterScale = 0.5;

            if (
                string.IsNullOrWhiteSpace(_TxtWaterScale.Text) ||
                double.TryParse(_TxtWaterScale.Text, out waterScale) == false
                )
            {
                waterScale = 0.5;
                _Log.WriteWarning($"Watermark scale not valid : [{_TxtWaterScale.Text}], using default scale {waterScale}");
            }

            _TxtWaterScale.Text = waterScale.ToString();

            _BtnProcessImages.IsEnabled = false;
            _PrgWaterProcess.Value      = 0;

            var waterTask = new WatermarkTask();

            waterTask.WatermarkBulkArgs = new WatermarkBulkArgs()
            {
                InputFolder     = inputFolder,
                InputWaterImage = inputWater,
                OutputFolder    = outputFolder,
                ParentTask      = waterTask,
                ForceWrite      = true,
                WaterScale      = waterScale
            };
            waterTask.OnProgressChanged += WaterTask_OnProgressChanged;

            Task.Run(() =>
            {
                Watermark.MarkImages(waterTask.WatermarkBulkArgs);
            }).ContinueWith(t =>
            {
                if (t.Exception != null)
                {
                    _Log.WriteException(t.Exception);
                }
                Dispatcher.Invoke(() =>
                {
                    _BtnProcessImages.IsEnabled = true;
                });
            });
        }