缩放图像时GDI +中发生一般错误

时间:2014-08-03 10:10:19

标签: c# asp.net image-processing

我试图缩放图像并将该图像保存到新位置。现在我有这个错误" System.Drawing.Image.Save"中的GDI +发生了一般性错误。

我在stackoverflow上找到了几个答案,遗憾的是没有任何结果。

    public static void SaveImageScaled(String imagePath, string destPath, Size newSize, String filename)
    {
        using (Bitmap bmpOriginal = (Bitmap)Image.FromFile(imagePath))
        using (Bitmap bmpResized = new Bitmap(newSize.Width, newSize.Height))
        using (Graphics g = Graphics.FromImage(bmpResized))
        {
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.DrawImage(
                bmpOriginal,
                new Rectangle(Point.Empty, bmpResized.Size),
                new Rectangle(Point.Empty, bmpOriginal.Size),
                GraphicsUnit.Pixel);

            // Lower the quality;
            long qualityPercentage = 75L;

            ImageCodecInfo[] myImageCodecInfoList = ImageCodecInfo.GetImageEncoders();
            ImageCodecInfo myImageCodecInfo = myImageCodecInfoList.Where(x => x.FormatID == bmpOriginal.RawFormat.Guid).First();

            Encoder myEncoder = Encoder.Quality;
            EncoderParameters myEncoderParameters = new EncoderParameters(1);
            EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, qualityPercentage);
            myEncoderParameters.Param[0] = myEncoderParameter;


            if (!Directory.Exists(destPath))
                Directory.CreateDirectory(destPath);

            // ERROR
            bmpResized.Save(destPath + filename, myImageCodecInfo, myEncoderParameters);               
        }
    }

1 个答案:

答案 0 :(得分:0)

此代码创建了一个写访问权限不足的目录。更改了更高目录级别的权限,并解决了问题。

        if (!Directory.Exists(destPath))
            Directory.CreateDirectory(destPath);