Exemple #1
0
        private static EncoderParameters GetQualityEncoderParameters(Image image, ImageCodecInfo encoder, int? quality, int? absoluteQuality)
        {
            if ((absoluteQuality.HasValue || quality.HasValue) && CanSetQuality(encoder))
            {
                int? _quality = null;
                var oldQuality = 0;
                try
                {
                    oldQuality = image.GetEncoderParameterList(System.Drawing.Imaging.Encoder.Quality.Guid)
                                        .Param.Select(p => p.NumberOfValues).FirstOrDefault();
                }
                catch { }

                if (absoluteQuality.HasValue)
                {
                    if (oldQuality < absoluteQuality.Value)
                    {
                        _quality = absoluteQuality;
                    }
                }
                else if (quality.HasValue)
                {
                    if (oldQuality != quality.Value)
                    {
                        _quality = quality;
                    }
                }

                if (_quality.HasValue)
                {
                    var parameters = new EncoderParameters(1);
                    parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, _quality.Value);
                    return parameters;
                }
            }
            return null;
        }