From 77d4f7a039ba1b6e486b3748c360f2242dee6187 Mon Sep 17 00:00:00 2001 From: Jaex Date: Fri, 29 Mar 2024 00:54:59 +0300 Subject: [PATCH] fixed #7366: Handle image save exception --- ShareX.HelpersLib/Helpers/ImageHelpers.cs | 1 + .../Forms/ScrollingCaptureForm.cs | 19 ++++--- ShareX/TaskHelpers.cs | 56 +++++++++++-------- 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/ShareX.HelpersLib/Helpers/ImageHelpers.cs b/ShareX.HelpersLib/Helpers/ImageHelpers.cs index 31cfd464902..4139d54dbd5 100644 --- a/ShareX.HelpersLib/Helpers/ImageHelpers.cs +++ b/ShareX.HelpersLib/Helpers/ImageHelpers.cs @@ -2165,6 +2165,7 @@ public static bool SaveImage(Image img, string filePath) } catch (Exception e) { + DebugHelper.WriteException(e); e.ShowError(); } diff --git a/ShareX.ScreenCaptureLib/Forms/ScrollingCaptureForm.cs b/ShareX.ScreenCaptureLib/Forms/ScrollingCaptureForm.cs index 97c1e1cc433..b8ccf240674 100644 --- a/ShareX.ScreenCaptureLib/Forms/ScrollingCaptureForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/ScrollingCaptureForm.cs @@ -133,13 +133,7 @@ private async Task StartCapture() btnCapture.Enabled = true; btnOptions.Enabled = true; - if (manager.Result != null) - { - btnUpload.Enabled = true; - pbOutput.Image = manager.Result; - pOutput.AutoScrollPosition = new Point(0, 0); - lblResultSize.Text = $"{manager.Result.Width}x{manager.Result.Height}"; - } + LoadImage(manager.Result); this.ForceActivate(); @@ -149,6 +143,17 @@ private async Task StartCapture() } } + private void LoadImage(Bitmap bmp) + { + if (bmp != null) + { + btnUpload.Enabled = true; + pbOutput.Image = bmp; + pOutput.AutoScrollPosition = new Point(0, 0); + lblResultSize.Text = $"{bmp.Width}x{bmp.Height}"; + } + } + private async Task SelectWindow() { WindowState = FormWindowState.Minimized; diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index 4b7bbfb4e59..b936a5525dd 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -372,34 +372,42 @@ public static MemoryStream SaveImageAsStream(Image img, EImageFormat imageFormat { MemoryStream ms = new MemoryStream(); - switch (imageFormat) + try { - case EImageFormat.PNG: - ImageHelpers.SavePNG(img, ms, pngBitDepth); + switch (imageFormat) + { + case EImageFormat.PNG: + ImageHelpers.SavePNG(img, ms, pngBitDepth); - if (Program.Settings.PNGStripColorSpaceInformation) - { - using (ms) + if (Program.Settings.PNGStripColorSpaceInformation) { - return ImageHelpers.PNGStripColorSpaceInformation(ms); + using (ms) + { + return ImageHelpers.PNGStripColorSpaceInformation(ms); + } } - } - break; - case EImageFormat.JPEG: - using (Bitmap newImage = ImageHelpers.FillBackground(img, Color.White)) - { - ImageHelpers.SaveJPEG(newImage, ms, jpegQuality); - } - break; - case EImageFormat.GIF: - ImageHelpers.SaveGIF(img, ms, gifQuality); - break; - case EImageFormat.BMP: - img.Save(ms, ImageFormat.Bmp); - break; - case EImageFormat.TIFF: - img.Save(ms, ImageFormat.Tiff); - break; + break; + case EImageFormat.JPEG: + using (Bitmap newImage = ImageHelpers.FillBackground(img, Color.White)) + { + ImageHelpers.SaveJPEG(newImage, ms, jpegQuality); + } + break; + case EImageFormat.GIF: + ImageHelpers.SaveGIF(img, ms, gifQuality); + break; + case EImageFormat.BMP: + img.Save(ms, ImageFormat.Bmp); + break; + case EImageFormat.TIFF: + img.Save(ms, ImageFormat.Tiff); + break; + } + } + catch (Exception e) + { + DebugHelper.WriteException(e); + e.ShowError(); } return ms;