From 4f2c96ce29599480e8f105bd23edf58ee370c67f Mon Sep 17 00:00:00 2001 From: Jaex Date: Wed, 20 Nov 2013 19:59:00 +0200 Subject: [PATCH] Added image effects hotkey --- HelpersLib/Forms/ImageViewer.cs | 2 +- HelpersLib/GIF/AnimatedGif.cs | 2 +- HelpersLib/GIF/GifCreator.cs | 2 +- HelpersLib/Helpers/ClipboardHelpers.cs | 2 +- HelpersLib/Helpers/Helpers.cs | 11 ----------- HelpersLib/Helpers/ImageHelpers.cs | 11 +++++++++++ HelpersLib/UserControls/MyPictureBox.cs | 2 +- ImageEffectsLib/Drawings/DrawImage.cs | 2 +- ImageEffectsLib/ImageEffectsForm.cs | 17 ++++++++++------- ShareX/Enums.cs | 4 +++- ShareX/Forms/MainForm.cs | 13 +++++++++++++ ShareX/Forms/MainForm_Capture.cs | 3 +++ ShareX/UploadTask.cs | 2 +- 13 files changed, 47 insertions(+), 26 deletions(-) diff --git a/HelpersLib/Forms/ImageViewer.cs b/HelpersLib/Forms/ImageViewer.cs index 8d763942e54..ad8ffae1cd4 100644 --- a/HelpersLib/Forms/ImageViewer.cs +++ b/HelpersLib/Forms/ImageViewer.cs @@ -56,7 +56,7 @@ public static void ShowImage(string filepath) { if (!string.IsNullOrEmpty(filepath) && File.Exists(filepath)) { - using (Image img = Helpers.GetImageFromFile(filepath)) + using (Image img = ImageHelpers.LoadImage(filepath)) using (ImageViewer viewer = new ImageViewer(img)) { viewer.ShowDialog(); diff --git a/HelpersLib/GIF/AnimatedGif.cs b/HelpersLib/GIF/AnimatedGif.cs index 803a1b0cb9e..4f488b0fb1c 100644 --- a/HelpersLib/GIF/AnimatedGif.cs +++ b/HelpersLib/GIF/AnimatedGif.cs @@ -97,7 +97,7 @@ public void AddFrame(Image img) public void AddFrame(string path) { - using (Image img = Helpers.GetImageFromFile(path)) + using (Image img = ImageHelpers.LoadImage(path)) { AddFrame(img); } diff --git a/HelpersLib/GIF/GifCreator.cs b/HelpersLib/GIF/GifCreator.cs index 9817c59d8b3..7922f8cb652 100644 --- a/HelpersLib/GIF/GifCreator.cs +++ b/HelpersLib/GIF/GifCreator.cs @@ -66,7 +66,7 @@ public void AddFrame(Image img, GIFQuality quality = GIFQuality.Default) public void AddFrame(string path, GIFQuality quality = GIFQuality.Default) { - using (Image img = Helpers.GetImageFromFile(path)) + using (Image img = ImageHelpers.LoadImage(path)) { AddFrame(img, quality); } diff --git a/HelpersLib/Helpers/ClipboardHelpers.cs b/HelpersLib/Helpers/ClipboardHelpers.cs index 9e311dc70b1..2cea6c0271d 100644 --- a/HelpersLib/Helpers/ClipboardHelpers.cs +++ b/HelpersLib/Helpers/ClipboardHelpers.cs @@ -210,7 +210,7 @@ public static bool CopyImageFromFile(string path) { try { - using (Image img = Helpers.GetImageFromFile(path)) + using (Image img = ImageHelpers.LoadImage(path)) { return CopyImage(img); } diff --git a/HelpersLib/Helpers/Helpers.cs b/HelpersLib/Helpers/Helpers.cs index 12725a46c46..ed16267cec1 100644 --- a/HelpersLib/Helpers/Helpers.cs +++ b/HelpersLib/Helpers/Helpers.cs @@ -109,17 +109,6 @@ public static EDataType FindDataType(string filePath) return EDataType.File; } - // http://stackoverflow.com/questions/788335/why-does-image-fromfile-keep-a-file-handle-open-sometimes - public static Image GetImageFromFile(string filePath) - { - if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath)) - { - return Image.FromStream(new MemoryStream(File.ReadAllBytes(filePath))); - } - - return null; - } - public static string AddZeroes(int number, int digits = 2) { return number.ToString().PadLeft(digits, '0'); diff --git a/HelpersLib/Helpers/ImageHelpers.cs b/HelpersLib/Helpers/ImageHelpers.cs index 5abd3f926a0..ab4f7a70613 100644 --- a/HelpersLib/Helpers/ImageHelpers.cs +++ b/HelpersLib/Helpers/ImageHelpers.cs @@ -1014,5 +1014,16 @@ public static void SaveImageFileDialog(Image img) } } } + + // http://stackoverflow.com/questions/788335/why-does-image-fromfile-keep-a-file-handle-open-sometimes + public static Image LoadImage(string filePath) + { + if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath)) + { + return Image.FromStream(new MemoryStream(File.ReadAllBytes(filePath))); + } + + return null; + } } } \ No newline at end of file diff --git a/HelpersLib/UserControls/MyPictureBox.cs b/HelpersLib/UserControls/MyPictureBox.cs index 7e092128a63..6645815eb79 100644 --- a/HelpersLib/UserControls/MyPictureBox.cs +++ b/HelpersLib/UserControls/MyPictureBox.cs @@ -197,7 +197,7 @@ public void LoadImageFromFile(string filePath) { isImageLoading = true; Reset(); - Image = Helpers.GetImageFromFile(filePath); + Image = ImageHelpers.LoadImage(filePath); AutoSetSizeMode(); isImageLoading = false; } diff --git a/ImageEffectsLib/Drawings/DrawImage.cs b/ImageEffectsLib/Drawings/DrawImage.cs index 1832e3438c8..a4d70d70d04 100644 --- a/ImageEffectsLib/Drawings/DrawImage.cs +++ b/ImageEffectsLib/Drawings/DrawImage.cs @@ -68,7 +68,7 @@ public override Image Apply(Image img) { if (!string.IsNullOrEmpty(ImageLocation) && File.Exists(ImageLocation)) { - using (Image img2 = Helpers.GetImageFromFile(ImageLocation)) + using (Image img2 = ImageHelpers.LoadImage(ImageLocation)) { Point imagePosition = Helpers.GetPosition(Placement, Offset, img.Size, img2.Size); Rectangle imageRectangle = new Rectangle(imagePosition, img2.Size); diff --git a/ImageEffectsLib/ImageEffectsForm.cs b/ImageEffectsLib/ImageEffectsForm.cs index 79e8a6db1ab..1e638029f01 100644 --- a/ImageEffectsLib/ImageEffectsForm.cs +++ b/ImageEffectsLib/ImageEffectsForm.cs @@ -125,12 +125,15 @@ private void AddEffectToTreeView(string groupName, params Type[] imageEffects) private void UpdatePreview() { - Stopwatch timer = Stopwatch.StartNew(); - - using (Image preview = ApplyEffects()) + if (DefaultImage != null) { - pbResult.LoadImage(preview); - Text = string.Format("ShareX - Image effects - Width: {0}, Height: {1}, Render time: {2} ms", preview.Width, preview.Height, timer.ElapsedMilliseconds); + Stopwatch timer = Stopwatch.StartNew(); + + using (Image preview = ApplyEffects()) + { + pbResult.LoadImage(preview); + Text = string.Format("ShareX - Image effects - Width: {0}, Height: {1}, Render time: {2} ms", preview.Width, preview.Height, timer.ElapsedMilliseconds); + } } } @@ -345,7 +348,7 @@ private void btnLoadImage_Click(object sender, EventArgs e) if (!string.IsNullOrEmpty(filePath)) { if (DefaultImage != null) DefaultImage.Dispose(); - DefaultImage = Helpers.GetImageFromFile(filePath); + DefaultImage = ImageHelpers.LoadImage(filePath); UpdatePreview(); } } @@ -381,7 +384,7 @@ private void pbResult_DragDrop(object sender, DragEventArgs e) if (Helpers.IsImageFile(files[0])) { if (DefaultImage != null) DefaultImage.Dispose(); - DefaultImage = Helpers.GetImageFromFile(files[0]); + DefaultImage = ImageHelpers.LoadImage(files[0]); UpdatePreview(); } } diff --git a/ShareX/Enums.cs b/ShareX/Enums.cs index ca24d9635e7..e7a784a8b4f 100644 --- a/ShareX/Enums.cs +++ b/ShareX/Enums.cs @@ -163,7 +163,9 @@ public enum HotkeyType [Description("Hash check")] HashCheck, [Description("Index folder")] - IndexFolder + IndexFolder, + [Description("Image effects")] + ImageEffects } public enum HotkeyStatus diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index f3062831af7..2ef29d0f878 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -564,6 +564,19 @@ private void OpenIndexFolder() UploadManager.IndexFolder(); } + private void OpenImageEffects() + { + string filePath = ImageHelpers.OpenImageFileDialog(); + + if (!string.IsNullOrEmpty(filePath)) + { + Image img = ImageHelpers.LoadImage(filePath); + ImageEffectsForm form = new ImageEffectsForm(img); + form.EditorMode(); + form.Show(); + } + } + #region Form events protected override void SetVisibleCore(bool value) diff --git a/ShareX/Forms/MainForm_Capture.cs b/ShareX/Forms/MainForm_Capture.cs index 98c09e82615..3d53744281a 100644 --- a/ShareX/Forms/MainForm_Capture.cs +++ b/ShareX/Forms/MainForm_Capture.cs @@ -134,6 +134,9 @@ private void HandleHotkeys(HotkeySettings hotkeySetting) case HotkeyType.IndexFolder: OpenIndexFolder(); break; + case HotkeyType.ImageEffects: + OpenImageEffects(); + break; } } diff --git a/ShareX/UploadTask.cs b/ShareX/UploadTask.cs index 8e410d0763c..853f0ecdb47 100644 --- a/ShareX/UploadTask.cs +++ b/ShareX/UploadTask.cs @@ -110,7 +110,7 @@ public static UploadTask CreateFileUploaderTask(string filePath, TaskSettings ta if (task.Info.TaskSettings.AdvancedSettings.ProcessImagesDuringFileUpload && dataType == EDataType.Image) { task.Info.Job = TaskJob.ImageJob; - task.tempImage = Helpers.GetImageFromFile(filePath); + task.tempImage = ImageHelpers.LoadImage(filePath); } else {