Added fillBackgroundWhite parameter

This commit is contained in:
Jaex 2021-07-18 18:53:25 +03:00
parent 98a06f6f32
commit 7cce221b30

View file

@ -2459,10 +2459,10 @@ public static MemoryStream PNGStripColorSpaceInformation(MemoryStream stream)
return PNGStripChunks(stream, "gAMA", "cHRM", "sRGB", "iCCP");
}
public static MemoryStream SaveJPEG(Image img, int quality)
public static MemoryStream SaveJPEG(Image img, int quality, bool fillBackgroundWhite = true)
{
MemoryStream ms = new MemoryStream();
SaveJPEG(img, ms, quality);
SaveJPEG(img, ms, quality, fillBackgroundWhite);
return ms;
}
@ -2474,22 +2474,37 @@ public static void SaveJPEG(Image img, string filePath, int quality)
}
}
public static void SaveJPEG(Image img, Stream stream, int quality)
public static void SaveJPEG(Image img, Stream stream, int quality, bool fillBackgroundWhite = true)
{
try
if (fillBackgroundWhite)
{
img = (Image)img.Clone();
img = FillBackground(img, Color.White);
try
{
img = (Image)img.Clone();
img = FillBackground(img, Color.White);
quality = quality.Clamp(0, 100);
EncoderParameters encoderParameters = new EncoderParameters(1);
SaveJPEGInternal(img, stream, quality);
}
finally
{
if (img != null) img.Dispose();
}
}
else
{
SaveJPEGInternal(img, stream, quality);
}
}
private static void SaveJPEGInternal(Image img, Stream stream, int quality)
{
quality = quality.Clamp(0, 100);
using (EncoderParameters encoderParameters = new EncoderParameters(1))
{
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, quality);
img.Save(stream, ImageFormat.Jpeg.GetCodecInfo(), encoderParameters);
}
finally
{
if (img != null) img.Dispose();
}
}
public static MemoryStream SaveJPEGAutoQuality(Image img, int sizeLimit, int qualityDecrement = 5, int minQuality = 0, int maxQuality = 100)
@ -2500,7 +2515,7 @@ public static MemoryStream SaveJPEGAutoQuality(Image img, int sizeLimit, int qua
if (minQuality >= maxQuality)
{
return SaveJPEG(img, minQuality);
return SaveJPEG(img, minQuality, false);
}
MemoryStream ms = null;
@ -2512,7 +2527,7 @@ public static MemoryStream SaveJPEGAutoQuality(Image img, int sizeLimit, int qua
ms.Dispose();
}
ms = SaveJPEG(img, quality);
ms = SaveJPEG(img, quality, false);
//Console.WriteLine($"Quality: {quality} - Size: {ms.Length.ToSizeString()}");