我试图缩放图像并将该图像保存到新位置。现在我有这个错误" 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);
}
}
答案 0 :(得分:0)
此代码创建了一个写访问权限不足的目录。更改了更高目录级别的权限,并解决了问题。
if (!Directory.Exists(destPath))
Directory.CreateDirectory(destPath);