Изменить разрешение изображения jpeg с помощью С#

Я пытаюсь изменить разрешение моего изображения jpg с помощью С#. Я ссылаюсь на этот код, написанный по этой ссылке Как изменить разрешение (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);
            }
        }

Исключение :

введите здесь описание изображения


person Pravin Tukadiya    schedule 01.11.2018    source источник
comment
не могли бы вы отредактировать свой вопрос, включив в него точную exception?   -  person Jazb    schedule 01.11.2018
comment
@AccessDenied Я пробовал это, но это дает мне другое исключение, например, файл не найден   -  person Pravin Tukadiya    schedule 01.11.2018
comment
см. stackoverflow.com/questions/21346211/   -  person Genish Parvadia    schedule 01.11.2018
comment
Я не сравниваю изображения. Я пытаюсь изменить разрешение изображения и сохранить его. но когда я пытаюсь сохранить изображения в градациях серого, они автоматически меняются на RGB. поэтому я пытаюсь назначить тот же параметр кодирования для оттенков серого, но выдает ошибку.   -  person Pravin Tukadiya    schedule 01.11.2018
comment
Я могу подтвердить этот баг.   -  person Access Denied    schedule 01.11.2018
comment
Не все определенные форматы пикселей фактически поддерживаются. 24-битные оттенки серого - нет. Не все сообщения об ошибках GDI+ относятся к делу. Это может быть не так..   -  person TaW    schedule 01.11.2018
comment
8-битный JPEG не существует в GDI+ и преобразуется в 24-битный при загрузке. Если все, что вы хотите сделать, это отредактировать данные EXIF, я предлагаю вам изучить спецификации EXIF ​​и проанализировать двоичный формат, чтобы отредактировать его.   -  person Nyerguds    schedule 13.11.2018
comment
@TaW нет, они сказали, что их 8-битные оттенки серого преобразуются в 24-битные, что является обычным RGB.   -  person Nyerguds    schedule 13.11.2018