Измените разрешение изображения JPEG с помощью C # - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь изменить разрешение моего изображения JPG с помощью C #. Я ссылался на этот код, который написан по этой ссылке Как изменить разрешение (DPI) изображения? он работает нормально, но у меня возникает другая проблема для изображений в градациях серого. если я попытаюсь сохранить изображение в градациях серого с помощью этого кода, тогда он изменит битовую глубину с 8 на 24.

Итак, я попробовал приведенный ниже код, но я получаю сообщение об ошибке типа «Область растрового изображения уже заблокирована». Я не знаю, как передать guid в GetEncoderParameterList ().

    private static ImageCodecInfo GetEncoder(ImageFormat format)
    {

        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

        foreach (ImageCodecInfo codec in codecs)
        {
            if (codec.FormatID == format.Guid)
            {
                return codec;
            }
        }
        return null;
    }

   //Code
   using (Image bitmap = Image.FromFile(pagePath))
        {
            using (Bitmap newBitmap = new Bitmap(bitmap))
            {
                ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
                EncoderParameters para = newBitmap.GetEncoderParameterList(jpgEncoder.Clsid);
                imageResolution = (int)newBitmap.HorizontalResolution;
                newBitmap.SetResolution(250, 250);
                newBitmap.Save("file300.jpg", jpgEncoder, para);
            }
        }

Исключение:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...