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); } }
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; }
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; }
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; }
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); }
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; }
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; }
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); }
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; }
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; } }
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); }
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(); } }
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 !!!"); }
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; } }