fixed #7366: Handle image save exception

This commit is contained in:
Jaex 2024-03-29 00:54:59 +03:00
parent 038b270070
commit 77d4f7a039
3 changed files with 45 additions and 31 deletions

View File

@ -2165,6 +2165,7 @@ namespace ShareX.HelpersLib
}
catch (Exception e)
{
DebugHelper.WriteException(e);
e.ShowError();
}

View File

@ -133,13 +133,7 @@ namespace ShareX.ScreenCaptureLib
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 @@ namespace ShareX.ScreenCaptureLib
}
}
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;

View File

@ -372,34 +372,42 @@ namespace ShareX
{
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;