1

I need to convert the following code based on System.Drawing to use ImageSharp. The method saves a JPG image.

internal static void SaveToJpg(MemoryStream ms, string fileName)
{
    using (var image = System.Drawing.Image.FromStream(ms))
    {
        EncoderParameters myEncoderParameters = new EncoderParameters(3);
        ImageCodecInfo ici = null;

        // Use codec for better quality.
        myEncoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
        myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.ScanMethod, (int) EncoderValue.ScanMethodInterlaced);
        myEncoderParameters.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.RenderMethod, (int) EncoderValue.RenderProgressive);

        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();

        foreach (ImageCodecInfo codec in codecs)
        {
            if (codec.MimeType == "image/jpeg")
                ici = codec;
        }

        try
        {
            image.Save(fileName, ici, myEncoderParameters);
        }
        finally
        {
            for (int i = 0; i < myEncoderParameters.Param.Length; i++)
            {
                myEncoderParameters.Param[i].Dispose();
            }

            myEncoderParameters.Dispose();
        }
    }
}

Are there any options to set the same parameters in ImageSharp? I've only found the JpegEncoder.Quality property, but the output image has a worse quality compared with the one saved with System.Drawing

internal static void SaveToJpg(MemoryStream ms, string fileName)
{
    using (var image = SixLabors.ImageSharp.Image.Load<SixLabors.ImageSharp.PixelFormats.Rgba32>(ms))
    {
        JpegEncoder jp = new JpegEncoder() { Quality = 100 };
        image.SaveAsJpeg(fileName, jp);
    }
}
Simone
  • 71
  • 4
  • Se the docs. https://docs.sixlabors.com/api/ImageSharp/SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder.html#SixLabors_ImageSharp_Formats_Jpeg_JpegEncoder_ColorType – James South Feb 20 '23 at 12:41

0 Answers0