diff --git a/GreenshotPlugin/Core/ImageHelper.cs b/GreenshotPlugin/Core/ImageHelper.cs index 31d5a5ee1..ef7cab2e3 100644 --- a/GreenshotPlugin/Core/ImageHelper.cs +++ b/GreenshotPlugin/Core/ImageHelper.cs @@ -256,11 +256,9 @@ namespace GreenshotPlugin.Core { int iImageSize = BitConverter.ToInt32(srcBuf, SizeICONDIR + SizeICONDIRENTRY * iIndex + 8); int iImageOffset = BitConverter.ToInt32(srcBuf, SizeICONDIR + SizeICONDIRENTRY * iIndex + 12); using (MemoryStream destStream = new MemoryStream()) { - using (BinaryWriter writer = new BinaryWriter(destStream)) { - writer.Write(srcBuf, iImageOffset, iImageSize); - destStream.Seek(0, System.IO.SeekOrigin.Begin); - bmpPngExtracted = new Bitmap(destStream); // This is PNG! :) - } + destStream.Write(srcBuf, iImageOffset, iImageSize); + destStream.Seek(0, System.IO.SeekOrigin.Begin); + bmpPngExtracted = new Bitmap(destStream); // This is PNG! :) } break; } diff --git a/GreenshotPlugin/Core/ImageOutput.cs b/GreenshotPlugin/Core/ImageOutput.cs index 3768cefc7..58d2d9698 100644 --- a/GreenshotPlugin/Core/ImageOutput.cs +++ b/GreenshotPlugin/Core/ImageOutput.cs @@ -157,10 +157,19 @@ namespace GreenshotPlugin.Core { } if (imageFormat == ImageFormat.Jpeg) { - EncoderParameters parameters = new EncoderParameters(1); - parameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(Encoder.Quality, outputSettings.JPGQuality); - ImageCodecInfo[] ies = ImageCodecInfo.GetImageEncoders(); - imageToSave.Save(targetStream, ies[1], parameters); + bool foundEncoder = false; + foreach (ImageCodecInfo imageCodec in ImageCodecInfo.GetImageEncoders()) { + if (imageCodec.FormatID == imageFormat.Guid) { + EncoderParameters parameters = new EncoderParameters(1); + parameters.Param[0] = new EncoderParameter(Encoder.Quality, outputSettings.JPGQuality); + imageToSave.Save(targetStream, imageCodec, parameters); + foundEncoder = true; + break; + } + } + if (!foundEncoder) { + throw new ApplicationException("No JPG encoder found, this should not happen."); + } } else if (imageFormat != ImageFormat.Png && Image.IsAlphaPixelFormat(imageToSave.PixelFormat)) { // No transparency in target format using (Bitmap tmpBitmap = ImageHelper.Clone(imageToSave, PixelFormat.Format24bppRgb)) {