Я пытаюсь изменить разрешение моего изображения 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);
}
}
Исключение :

exception? - person Jazb   schedule 01.11.2018