Exemplo n.º 1
0
        public bool Execute(FileItem item, AutoExportPluginConfig configData)
        {
            configData.IsRedy  = false;
            configData.IsError = false;
            var filename = item.FileName;
            var conf     = new ExecuteFilePluginViewModel(configData);

            if (string.IsNullOrEmpty(conf.PathToExe) || !File.Exists(conf.PathToExe))
            {
                configData.IsRedy  = true;
                configData.IsError = true;
                configData.Error   = "No executable path was set or executable not found";
                return(false);
            }
            var outfile = Path.Combine(Path.GetTempPath(), Path.GetFileName(filename));

            outfile = AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);

            if (File.Exists(outfile))
            {
                PhotoUtils.Run(conf.PathToExe,
                               string.IsNullOrEmpty(conf.Params) ? outfile : conf.Params.Replace("%1", outfile), ProcessWindowStyle.Normal);
            }
            else
            {
                configData.IsError = true;
                configData.Error   = "Output file not found !";
            }

            configData.IsRedy = true;
            return(true);
        }
 public void Preview()
 {
     try
     {
         var outfile = Path.GetTempFileName();
         outfile =
             AutoExportPluginHelper.ExecuteTransformPlugins(ServiceProvider.Settings.SelectedBitmap.FileItem,
                                                            Config,
                                                            outfile, !FullSize);
         if (_wnd == null || !_wnd.IsVisible)
         {
             _wnd       = new PreviewWnd();
             _wnd.Owner = (Window)ServiceProvider.PluginManager.SelectedWindow;
         }
         _wnd.Show();
         _wnd.Image.BeginInit();
         _wnd.Image.Source = new BitmapImage(new Uri(outfile));
         _wnd.Image.EndInit();
         _wnd.ImageO.BeginInit();
         _wnd.ImageO.Source = new BitmapImage(new Uri(ServiceProvider.Settings.SelectedBitmap.FileItem.LargeThumb));
         _wnd.ImageO.EndInit();
     }
     catch (Exception ex)
     {
         MessageBox.Show("Error to preview filter \n" + ex.Message);
     }
 }
Exemplo n.º 3
0
        public void Send(FileItem item, AutoExportPluginConfig configData)
        {
            try
            {
                var filename = item.FileName;
                configData.IsRedy  = false;
                configData.IsError = false;
                var conf = new DropboxViewModel(configData);

                var outfile = Path.Combine(Path.GetTempPath(), Path.GetFileName(filename));
                outfile = AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);

                conf.Upload(outfile, ServiceProvider.Settings.DefaultSession.Name);

                // remove unused file
                if (outfile != item.FileName)
                {
                    PhotoUtils.WaitForFile(outfile);
                    File.Delete(outfile);
                }
            }
            catch (Exception exception)
            {
                Log.Error("Error send dropbox file", exception);
                configData.IsError = true;
                configData.Error   = exception.Message;
            }
            configData.IsRedy = true;
        }
Exemplo n.º 4
0
        public void Send(FileItem item, AutoExportPluginConfig configData)
        {
            try
            {
                configData.IsRedy  = false;
                configData.IsError = false;
                var conf = new FacebookPluginViewModel(configData, false);

                var outfile = PhotoUtils.ReplaceExtension(Path.GetTempFileName(), Path.GetExtension(item.Name));
                outfile = AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);

                conf.UploadFile(outfile, item.Name);

                // remove unused file
                if (outfile != item.FileName)
                {
                    PhotoUtils.WaitForFile(outfile);
                    File.Delete(outfile);
                }
            }
            catch (Exception exception)
            {
                Log.Error("Error send facebook file", exception);
                configData.IsError = true;
                configData.Error   = exception.Message;
            }
            configData.IsRedy = true;
        }
Exemplo n.º 5
0
        public void Send(FileItem item, AutoExportPluginConfig configData)
        {
            try
            {
                configData.IsRedy  = false;
                configData.IsError = false;
                var conf = new SendEmailPluginViewModel(configData);

                var outfile = PhotoUtils.ReplaceExtension(Path.GetTempFileName(), Path.GetExtension(item.Name));
                outfile = AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);

                HelpProvider.SendEmail((string.IsNullOrEmpty(conf.Message) ? "." : conf.TransformTemplate(item, conf.Message)), (string.IsNullOrEmpty(conf.Subject) ? "Your photo" : conf.TransformTemplate(item, conf.Subject)),
                                       conf.From, conf.To, outfile);

                // remove unused file
                if (outfile != item.FileName)
                {
                    PhotoUtils.WaitForFile(outfile);
                    File.Delete(outfile);
                }
            }
            catch (Exception exception)
            {
                Log.Error("Error send email file", exception);
                configData.IsError = true;
                configData.Error   = exception.Message;
            }
            configData.IsRedy = true;
        }
Exemplo n.º 6
0
        public bool Execute(FileItem item, AutoExportPluginConfig configData)
        {
            configData.IsRedy  = false;
            configData.IsError = false;
            var filename = item.FileName;
            var conf     = new TransformPluginViewModel(configData);
            var outfile  = Path.GetTempFileName();

            outfile = PhotoUtils.ReplaceExtension(outfile, Path.GetExtension(filename));
            outfile = AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);
            if (conf.CreateNew)
            {
                string newFile = Path.Combine(Path.GetDirectoryName(filename),
                                              Path.GetFileNameWithoutExtension(filename) + "_transformed" + ".jpg");
                newFile = PhotoUtils.GetNextFileName(newFile);

                File.Copy(outfile, newFile, true);

                if (ServiceProvider.Settings.DefaultSession.GetFile(newFile) == null)
                {
                    Application.Current.Dispatcher.Invoke(new Action(() =>
                    {
                        FileItem im    = new FileItem(newFile);
                        im.Transformed = true;
                        var i          = ServiceProvider.Settings.DefaultSession.Files.IndexOf(item);
                        if (ServiceProvider.Settings.DefaultSession.Files.Count - 1 == i)
                        {
                            ServiceProvider.Settings.DefaultSession.Files.Add(im);
                        }
                        else
                        {
                            ServiceProvider.Settings.DefaultSession.Files.Insert(i + 1, im);
                        }
                    }));
                }
            }
            else
            {
                // wait for file to be not locked
                PhotoUtils.WaitForFile(filename);
                File.Copy(outfile, filename, true);
                item.IsLoaded = false;
                item.RemoveThumbs();
                item.Transformed = true;
            }
            // remove unused file
            if (outfile != item.FileName)
            {
                PhotoUtils.WaitForFile(outfile);
                File.Delete(outfile);
            }
            configData.IsRedy = true;
            return(true);
        }
Exemplo n.º 7
0
        private void Print(FileItem item, AutoExportPluginConfig configData)
        {
            try
            {
                PrintDialog dlg = new PrintDialog();
                configData.IsRedy  = false;
                configData.IsError = false;
                var conf    = new PrintPluginViewModel(configData);
                var outfile = Path.Combine(Path.GetTempPath(), Path.GetFileName(item.FileName));

                outfile = AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);

                System.Printing.PrintCapabilities capabilities = dlg.PrintQueue.GetPrintCapabilities(dlg.PrintTicket);
                var PageWidth  = (int)capabilities.PageImageableArea.ExtentWidth;
                var PageHeight = (int)capabilities.PageImageableArea.ExtentHeight;

                var panel = new StackPanel
                {
                    Margin = new Thickness(conf.Margin),
                };

                var image = new Image
                {
                    Source  = BitmapLoader.Instance.LoadImage(outfile, PageWidth > PageHeight ? PageWidth : PageHeight, conf.Rotate ? 90 : 0),
                    Width   = PageWidth,
                    Height  = PageHeight,
                    Stretch = Stretch.Uniform,
                };


                panel.Children.Add(image);
                panel.UpdateLayout();
                panel.Measure(new Size(PageWidth, PageHeight));
                panel.Arrange(new Rect(new Point(0, 0), panel.DesiredSize));
                panel.UpdateLayout();
                dlg.PrintVisual(panel, item.Name);
                image.Source = null;
                panel.Children.Clear();
                // remove unused file
                if (outfile != item.FileName)
                {
                    PhotoUtils.WaitForFile(outfile);
                    File.Delete(outfile);
                }
            }
            catch (Exception exception)
            {
                Log.Error("Error print file", exception);
                configData.IsError = true;
                configData.Error   = exception.Message;
            }

            configData.IsRedy = true;
        }
Exemplo n.º 8
0
        private void Send(FileItem item, AutoExportPluginConfig configData)
        {
            try
            {
                configData.IsRedy  = false;
                configData.IsError = false;
                var conf = new FtpPluginViewModel(configData);

                var outfile = PhotoUtils.ReplaceExtension(Path.GetTempFileName(), Path.GetExtension(item.Name));
                outfile = AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);

                using (FtpClient conn = new FtpClient())
                {
                    conn.Host = conf.Server;
                    if (conf.Port > 0)
                    {
                        conn.Port = conf.Port;
                    }

                    conn.Credentials = new NetworkCredential(conf.User, conf.Pass);
                    if (!string.IsNullOrWhiteSpace(conf.ServerPath))
                    {
                        conn.SetWorkingDirectory(conf.ServerPath);
                    }
                    using (Stream ostream = conn.OpenWrite(item.Name))
                    {
                        try
                        {
                            var data = File.ReadAllBytes(outfile);
                            ostream.Write(data, 0, data.Length);
                        }
                        finally
                        {
                            ostream.Close();
                        }
                    }
                }
                // remove unused file
                if (outfile != item.FileName)
                {
                    PhotoUtils.WaitForFile(outfile);
                    File.Delete(outfile);
                }
            }
            catch (Exception exception)
            {
                Log.Error("Error senf ftp file", exception);
                configData.IsError = true;
                configData.Error   = exception.Message;
            }
            configData.IsRedy = true;
        }
Exemplo n.º 9
0
        public bool Execute(FileItem item, AutoExportPluginConfig configData)
        {
            configData.IsRedy  = false;
            configData.IsError = false;
            var filename = item.FileName;
            var conf     = new CopyFilePluginViewModel(configData);

            if (string.IsNullOrEmpty(conf.Path))
            {
                configData.IsRedy  = true;
                configData.IsError = true;
                configData.Error   = "No export path was set";
                return(false);
            }
            if (!Directory.Exists(conf.Path))
            {
                Directory.CreateDirectory(conf.Path);
            }
            string name = Path.GetFileName(filename);

            if (!string.IsNullOrEmpty(conf.FileName))
            {
                name = conf.FileName;
                if (name.Contains("%1"))
                {
                    name = name.Replace("%1", Path.GetFileNameWithoutExtension(filename));
                }
                if (!name.Contains("."))
                {
                    name = name + Path.GetExtension(filename);
                }
            }

            var outfile = Path.Combine(conf.Path, name);

            AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);

            configData.IsRedy = true;
            return(true);
        }
Exemplo n.º 10
0
        public void Send(FileItem item, AutoExportPluginConfig configData)
        {
            try
            {
                var filename = item.FileName;
                configData.IsRedy  = false;
                configData.IsError = false;
                var conf = new SendEmailPluginViewModel(configData);

                var outfile = Path.Combine(Path.GetTempPath(), Path.GetFileName(filename));
                outfile = AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);

                var client  = new MailgunClient("digicamcontrol.mailgun.org", "key-6n75wci5cpuz74vsxfcwfkf-t8v74g82", 3);
                var message = new MailMessage(conf.From, conf.To)
                {
                    Subject    = (string.IsNullOrEmpty(conf.Subject) ? "Your photo":conf.TransformTemplate(item, conf.Subject)),
                    Body       = (string.IsNullOrEmpty(conf.Message) ? "." : conf.TransformTemplate(item, conf.Message)),
                    IsBodyHtml = true
                };
                message.Attachments.Add(new Attachment(outfile));

                client.SendMail(message);
                message.Dispose();

                // remove unused file
                if (outfile != item.FileName)
                {
                    PhotoUtils.WaitForFile(outfile);
                    File.Delete(outfile);
                }
            }
            catch (Exception exception)
            {
                Log.Error("Error send facebook file", exception);
                configData.IsError = true;
                configData.Error   = exception.Message;
            }
            configData.IsRedy = true;
        }
Exemplo n.º 11
0
        private void CopyFiles(bool preview)
        {
            int counter = 0;

            try
            {
                _filenames.Clear();
                OnProgressChange("Copying files");
                _tempdir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
                Directory.CreateDirectory(_tempdir);
                foreach (FileItem fileItem in Files)
                {
                    string randomFile = Path.Combine(_tempdir, "image_" + counter.ToString("0000") + ".jpg");
                    OnProgressChange("Copying file " + fileItem.Name);
                    string source = preview
                        ? (UseSmallThumb ? fileItem.SmallThumb : fileItem.LargeThumb)
                        : fileItem.FileName;

                    AutoExportPluginHelper.ExecuteTransformPlugins(fileItem, PluginSetting.AutoExportPluginConfig,
                                                                   source, randomFile);

                    _filenames.Add(randomFile);
                    counter++;
                    if (_shouldStop)
                    {
                        OnActionDone();
                        return;
                    }
                }
            }
            catch (Exception exception)
            {
                OnProgressChange("Error copy files " + exception.Message);
                Log.Error("Error copy files ", exception);
                _shouldStop = true;
            }
        }
Exemplo n.º 12
0
        public bool Execute(FileItem item, AutoExportPluginConfig configData)
        {
            configData.IsRedy  = false;
            configData.IsError = false;
            var filename = item.FileName;

            var outfile = Path.GetTempFileName();

            AutoExportPluginHelper.ExecuteTransformPlugins(item, configData, outfile);
            // wait for file to be not locked
            PhotoUtils.WaitForFile(filename);
            File.Copy(outfile, filename, true);
            File.Delete(outfile);
            item.IsLoaded = false;
            item.RemoveThumbs();
            // remove unused file
            if (outfile != item.FileName)
            {
                PhotoUtils.WaitForFile(outfile);
                File.Delete(outfile);
            }
            configData.IsRedy = true;
            return(true);
        }
Exemplo n.º 13
0
        private void _backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            RaisePropertyChanged(() => IsBusy);
            RaisePropertyChanged(() => IsFree);


            string tempFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            try
            {
                if (!Directory.Exists(tempFolder))
                {
                    Directory.CreateDirectory(tempFolder);
                }
            }
            catch (Exception exception)
            {
                OutPut.Add(exception.Message);
                return;
            }

            Thread.Sleep(500);
            CurrentImages = 0;
            TotalImages   = ServiceProvider.Settings.DefaultSession.Files.Count;
            int counter = 0;

            ProgressMax = MaxValue - MinValue;
            Progress    = 0;
            for (int i = MinValue; i < MaxValue; i++)
            {
                if (_backgroundWorker.CancellationPending)
                {
                    DeleteTempFolder(tempFolder);
                    OutPut.Insert(0, "Operation CANCELED !!!");
                    return;
                }

                try
                {
                    Progress++;
                    FileItem item    = ServiceProvider.Settings.DefaultSession.Files[i];
                    string   outfile = Path.Combine(tempFolder, "img" + counter.ToString("000000") + ".jpg");
                    if (TransformBefor && !Preview)
                    {
                        AutoExportPluginHelper.ExecuteTransformPlugins(item, _config, item.FileName, outfile);
                        CopyFile(outfile, outfile);
                    }
                    else
                    {
                        if (Preview)
                        {
                            BitmapLoader.Instance.GenerateCache(item);
                            File.Copy(item.SmallThumb, outfile);
                        }
                        else
                        {
                            CopyFile(item.FileName, outfile);
                        }
                    }
                    //outfile =
                    if (!TransformBefor)
                    {
                        AutoExportPluginHelper.ExecuteTransformPlugins(item, _config, outfile, outfile);
                    }
                    OutPut.Insert(0, "Procesing file " + item.Name);
                    counter++;
                }
                catch (Exception exception)
                {
                    OutPut.Add(exception.Message);
                }
            }
            switch (VideoType.Extension)
            {
            case ".mp4":
                GenerateMp4(tempFolder);
                break;

            case ".gif":
                GenerateGif(tempFolder);
                break;
            }


            DeleteTempFolder(tempFolder);
            Progress = ProgressMax;
            OutPut.Insert(0, "DONE !!!");
            if (Preview)
            {
                PlayVideo();
            }
        }
Exemplo n.º 14
0
        private void _backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            RaisePropertyChanged(() => IsBusy);
            RaisePropertyChanged(() => IsFree);


            string tempFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            string ffmpegPath = Path.Combine(Settings.ApplicationFolder, "ffmpeg.exe");

            if (!File.Exists(ffmpegPath))
            {
                MessageBox.Show("ffmpeg not found! Please reinstall the application.");
                return;
            }

            try
            {
                if (!Directory.Exists(tempFolder))
                {
                    Directory.CreateDirectory(tempFolder);
                }
            }
            catch (Exception exception)
            {
                OutPut.Add(exception.Message);
                return;
            }

            Thread.Sleep(500);
            CurrentImages = 0;
            TotalImages   = ServiceProvider.Settings.DefaultSession.Files.Count;
            int counter = 0;

            ProgressMax = MaxValue - MinValue;
            Progress    = 0;
            for (int i = MinValue; i < MaxValue; i++)
            {
                if (_backgroundWorker.CancellationPending)
                {
                    DeleteTempFolder(tempFolder);
                    OutPut.Insert(0, "Operation CANCELED !!!");
                    return;
                }

                try
                {
                    Progress++;
                    FileItem item    = ServiceProvider.Settings.DefaultSession.Files[i];
                    string   outfile = Path.Combine(tempFolder, "img" + counter.ToString("000000") + ".jpg");
                    if (TransformBefor)
                    {
                        AutoExportPluginHelper.ExecuteTransformPlugins(item, _config, item.FileName, outfile);
                        CopyFile(outfile, outfile);
                    }
                    else
                    {
                        CopyFile(item.FileName, outfile);
                    }
                    //outfile =
                    if (!TransformBefor)
                    {
                        AutoExportPluginHelper.ExecuteTransformPlugins(item, _config, outfile, outfile);
                    }
                    OutPut.Insert(0, "Procesing file " + item.Name);
                    counter++;
                }
                catch (Exception exception)
                {
                    OutPut.Add(exception.Message);
                }
            }

            try
            {
                string parameters = @"-r {0} -i {1}\img00%04d.jpg -c:v libx264 -vf fps=25 -pix_fmt yuv420p {2}";
                if (VideoType.Name.StartsWith("4K"))
                {
                    parameters = @"-r {0} -i {1}\img00%04d.jpg -c:v libx265 -vf fps=25 {2}";
                }
                OutPut.Insert(0, "Generating video ..... ");
                Process newprocess = new Process();
                Progress             = 0;
                ProgressMax          = (MaxValue - MinValue) * 25 / Fps;
                newprocess.StartInfo = new ProcessStartInfo()
                {
                    FileName               = ffmpegPath,
                    Arguments              = string.Format(parameters, Fps, tempFolder, OutPutFile),
                    UseShellExecute        = false,
                    WindowStyle            = ProcessWindowStyle.Minimized,
                    CreateNoWindow         = true,
                    RedirectStandardOutput = true,
                    RedirectStandardError  = true
                };
                newprocess.Start();
                newprocess.OutputDataReceived += newprocess_OutputDataReceived;
                newprocess.ErrorDataReceived  += newprocess_OutputDataReceived;
                newprocess.BeginOutputReadLine();
                newprocess.BeginErrorReadLine();
                newprocess.WaitForExit();
            }
            catch (Exception exception)
            {
                OutPut.Insert(0, "Converting error :" + exception.Message);
            }

            DeleteTempFolder(tempFolder);

            OutPut.Insert(0, "DONE !!!");
        }
Exemplo n.º 15
0
        public void CopyFiles(bool preview)
        {
            int counter = 0;

            try
            {
                _filenames.Clear();

                OnProgressChange("Copying files");
                WriteLog("Copying files");
                WriteShortLog("Copying files");

                foreach (FileItem fileItem in Files)
                {
                    string source = preview ? fileItem.LargeThumb : fileItem.FileName;

                    MagickImageInfo info = new MagickImageInfo();
                    info.Read(source);
                    string format = info.Format.ToString();

                    OnProgressChange(fileItem.Name + " format is:  " + format);
                    WriteLog(fileItem.Name + " format is:  " + format);
                    WriteShortLog(fileItem.Name + " format is:  " + format);


                    if (format == "Jpeg")
                    {
                        OnProgressChange("Copying file " + fileItem.Name);
                        WriteLog("Copying file " + fileItem.Name);
                        WriteShortLog("Copying file " + fileItem.Name);
                        string randomFile = Path.Combine(ProjetFolder, "image_" + counter.ToString("0000") + ".jpg");
                        AutoExportPluginHelper.ExecuteTransformPlugins(fileItem, PluginSetting.AutoExportPluginConfig, source, randomFile);
                        _filenames.Add(randomFile);
                        counter++;
                    }

                    if (format == "Tiff")
                    {
                        OnProgressChange("Converting file " + fileItem.Name);
                        WriteLog("Converting file " + fileItem.Name);
                        WriteShortLog("Converting file " + fileItem.Name);
                        string randomFile = Path.Combine(ProjetFolder, "image_" + counter.ToString("0000") + ".jpg");

                        try
                        {
                            using (MagickImage image = new MagickImage(source))
                            {
                                image.Format = MagickFormat.Jpeg;
                                image.Write(randomFile);
                            }
                            _filenames.Add(randomFile);
                            counter++;
                        }
                        catch (Exception exception)
                        {
                            Log.Error("Error converting Tiff file", exception);
                        }
                    }

                    if (format == "Nef" || format == "Cr2" || format == "Crw")
                    {
                        OnProgressChange("Converting file " + fileItem.Name);
                        WriteLog("Converting file " + fileItem.Name);
                        WriteShortLog("Converting file " + fileItem.Name);
                        string randomFile = Path.Combine(ProjetFolder, "image_" + counter.ToString("0000") + ".jpg");

                        try
                        {
                            string dcraw_exe = Path.Combine(Settings.ApplicationFolder, "dcraw.exe");
                            if (File.Exists(dcraw_exe))
                            {
                                PhotoUtils.RunAndWait(dcraw_exe,
                                                      string.Format(" -e -O \"{0}\" \"{1}\"", randomFile, source));
                                _filenames.Add(randomFile);
                                counter++;
                            }
                        }
                        catch (Exception exception)
                        {
                            Log.Error("Error converting Raw file", exception);
                        }
                    }

                    if (format != "Jpeg" && format != "Tiff" && format != "Nef" && format != "Cr2" && format != "Crw")
                    {
                        OnProgressChange(fileItem.Name + " has invalid format, will not be copied");
                        WriteLog(fileItem.Name + " has invalid format, will not be copied");
                        WriteShortLog(fileItem.Name + " has invalid format, will not be copied");
                    }


                    if (_shouldStop)
                    {
                        OnActionDone();
                        return;
                    }
                }
            }
            catch (Exception exception)
            {
                OnProgressChange("Error copy files " + exception.Message);
                WriteLog("Error copy files " + exception.Message);
                WriteShortLog("Error copy files " + exception.Message);
                Log.Error("Error copy files ", exception);
                _shouldStop = true;
            }
        }