public static void Test() { #region Image Uploaders foreach (ImageDestType uploader in Enum.GetValues(typeof(UploadersLib.ImageDestType))) { Console.WriteLine("Starting: " + uploader.GetDescription()); WorkerTask task = new WorkerTask(WorkerTask.Jobs.UPLOAD_IMAGE); task.MyImageUploader = uploader; task.UpdateLocalFilePath(Tester.TestFile); if (uploader != ImageDestType.TWITSNAPS) { new TaskManager(ref task).UploadImage(); } } #endregion #region Text Uploaders /* foreach (TextDestType uploader in Enum.GetValues(typeof(UploadersLib.TextDestType))) { WorkerTask task = new WorkerTask(WorkerTask.Jobs.UploadFromClipboard); task.MyText = TextInfo.FromString(uploader); task.MakeTinyURL = false; // preventing Error: TinyURL redirects to a TinyURL. task.MyTextUploader = uploader; task.RunWorker(); } */ #endregion #region File Uploaders #endregion #region URL Shorteners #endregion }
/// <summary> /// Function to return the file path of a captured image. ImageFormat is based on length of the image. /// </summary> /// <param name="img">The actual image</param> /// <param name="filePath">The path to where the image will be saved</param> /// <returns>Returns the file path to a screenshot</returns> public static string SaveImage(ref WorkerTask task) { Image img = task.MyImage; string filePath = task.LocalFilePath; if (!string.IsNullOrEmpty(filePath)) { img = ImageEffects.ApplySizeChanges(img); img = ImageEffects.ApplyScreenshotEffects(img); if (task.Job != WorkerTask.Jobs.UploadFromClipboard || !Engine.conf.WatermarkExcludeClipboardUpload) { img = ImageEffects.ApplyWatermark(img); } long size = (long)Engine.conf.SwitchAfter * 1024; MemoryStream ms = null; GraphicsMgr.SaveImageToMemoryStreamOptions opt = new GraphicsMgr.SaveImageToMemoryStreamOptions(img, Engine.zImageFileFormat); opt.GIFQuality = Engine.conf.GIFQuality; opt.JpgQuality = Engine.conf.JpgQuality; opt.MakeJPGBackgroundWhite = Engine.conf.MakeJPGBackgroundWhite; try { ms = GraphicsMgr.SaveImageToMemoryStream(opt); if (ms.Length > size && size != 0) { opt.MyImageFileFormat = Engine.zImageFileFormatSwitch; ms = GraphicsMgr.SaveImageToMemoryStream(opt); filePath = Path.ChangeExtension(filePath, Engine.zImageFileFormatSwitch.Extension); } if (!Directory.Exists(Path.GetDirectoryName(filePath))) { Directory.CreateDirectory(Path.GetDirectoryName(filePath)); } int retry = 3; while (retry > 0 && !File.Exists(filePath)) { using (FileStream fi = File.Create(filePath)) { if (retry < 3) { System.Threading.Thread.Sleep(1000); } FileSystem.AppendDebug(string.Format("Writing image {0}x{1} to {2}", img.Width, img.Height, filePath)); ms.WriteTo(fi); retry--; } } } catch (Exception ex) { FileSystem.AppendDebug("Error while saving image", ex); } finally { if (ms != null) ms.Dispose(); } } task.UpdateLocalFilePath(filePath); return filePath; }
private void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bw = (BackgroundWorker)sender; UploaderInfo[] uploaders = (UploaderInfo[])e.Argument; foreach (UploaderInfo uploader in uploaders) { if (this.IsDisposed || !isTesting || uploader == null) { break; } DestConfig dcTester = new DestConfig(); dcTester.Outputs.Add(OutputEnum.RemoteHost); TaskInfo tiTester = new TaskInfo() { Job = WorkerTask.JobLevel2.UploadFromClipboard, DestConfig = dcTester }; WorkerTask task = new WorkerTask(new BackgroundWorker() { WorkerReportsProgress = true }, tiTester); uploader.Timer = new Stopwatch(); uploader.Timer.Start(); uploader.Task = task; bw.ReportProgress((int)UploadStatus.Uploading, uploader); try { switch (uploader.UploaderType) { case UploaderType.ImageUploader: task.WorkflowConfig.DestConfig.ImageUploaders.Add(uploader.ImageUploader); task.UpdateLocalFilePath(TestImageFilePath); task.PublishData(); break; case UploaderType.FileUploader: task.WorkflowConfig.DestConfig.ImageUploaders.Add(ImageDestination.FileUploader); task.WorkflowConfig.DestConfig.FileUploaders.Add(uploader.FileUploader); task.UpdateLocalFilePath(TestFilePath); task.PublishData(); break; case UploaderType.TextUploader: task.WorkflowConfig.DestConfig.TextUploaders.Add(uploader.TextUploader); task.SetText(TestText); task.PublishData(); break; case UploaderType.UrlShortener: task.WorkflowConfig.DestConfig.LinkUploaders.Add(uploader.UrlShortener); task.ShortenURL(TestURL); if (task.UploadResults.Count > 0) { task.UploadResults[0].URL = task.UploadResults[0].ShortenedURL; } break; default: throw new Exception("Unknown uploader."); } } catch (Exception ex) { ConsoleWriteLine(ex.ToString()); } finally { uploader.Timer.Stop(); uploader.Task = task; bw.ReportProgress((int)UploadStatus.Uploaded, uploader); } } }