это мой первый вопрос в stackoverlow и извините за мой грязный английский
Я всегда получал это сообщение об ошибке при попытке сохранить изображения
он сказал, что в gdi+ произошла общая ошибка. Я пытаюсь сохранить сжатые изображения в исходной папке
Вот мой код
public static void CompressImage(string SoucePath, int quality)
{
var FileName = Path.GetFileName(SoucePath);
var DestPath = SoucePath + "\\" + FileName;
using (Bitmap bmp1 = new Bitmap(SoucePath))
{
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
System.Drawing.Imaging.Encoder QualityEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(QualityEncoder, quality);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(DestPath, jpgEncoder, myEncoderParameters);
}
}
private static ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
Path.Combine(SoucePath , FileName)
вместоSoucePath + "\\" + FileName
. У учетной записи приложения может не быть разрешения на запись в целевую папку.FileName
может быть относительным путем, указывающим на недопустимую папку, например,..\..\Images\someImage.jpg
может указывать на папку проектаImages
во время отладки, но совершенно другое место во время выполнения. - person Panagiotis Kanavos   schedule 18.09.2020