使用c#

时间:2018-11-01 06:36:45

标签: c# image bitmap imaging

我正在尝试使用c#更改jpg图像的分辨率。 我已经参考了在此链接How to change resolution (DPI) of an image?中编写的这段代码,它的工作正常,但是对于灰度图像,我还有另一个问题。 如果我尝试使用此代码保存灰度图像,则会将位深度8更改为24。

所以我尝试下面的代码,但是出现类似“位图区域已被锁定”的错误。我不知道如何在GetEncoderParameterList()中传递guid。

    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

0 个答案:

没有答案