我有这个简单的代码:
System.Drawing.Bitmap bm = bitmapSourceToBitmap(source);
try
{
bm.Save(@"C:\Seva\testeImagem.jpg");
}
catch (Exception ex)
{
}
抛出:通用错误GDI +。 无论如何,我进行了搜索,人们说问题在于权限。我如何授予它权限?感谢
答案 0 :(得分:1)
首先找出代码运行的凭据。
然后检查(并在需要时修复)Seva文件夹的安全性/ NTFS设置。
特别是当此代码在网站或服务中运行时,该帐户将无权写入该文件夹。
答案 1 :(得分:0)
而不是保存到C:\ Seva \ testeImagem.jpg为什么不尝试保存到
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
"testeImagem.jpg");
您必须确保C:\下存在Seva文件夹,并确保当前用户有权写入\ create此文件夹。此外,它被认为是写入用户不拥有的文件夹的不良做法。如果用户以普通用户身份运行(而不是管理员),则无法执行此操作会导致权限例外。
答案 2 :(得分:0)
你可以测试文件夹是否存在吗?
void BitmapCopy(System.Drawing.Bitmap source, string filename) {
if (!String.IsNullOrEmpty(filename) && (source != null)) {
string dirName = @"C:\Seva";
if (!System.IO.Directory.Exists(dirName)) {
dirName = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
}
string bmpFile = System.IO.Path.Combine(dirName, filename);
System.Drawing.Bitmap bm = bitmapSourceToBitmap(source);
try {
bm.Save(bmpFile);
} catch (ArgumentNullException ex) {
Console.WriteLine(ex.Message);
} catch (System.Runtime.InteropServices.ExternalException ex) {
Console.WriteLine(ex.Message);
}
}
}