[英]Save the JPG file, A generic error occurred in GDI+
我正在尝试保存JPEG图像,但出现错误:“ GDI +中发生一般错误”
我尝试了以下代码:
Bitmap b = new Bitmap(m_image.Width, m_image.Height);
Graphics g = Graphics.FromImage((Image)b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(m_image, 0, 0, m_image.Width, m_image.Height);
g.Dispose();
Image img1 = (Image)b;
img1.Save(Filename, ImageFormat.Jpeg);
m_image.Save(Filename, ImageFormat.Jpeg);
要么
m_image.save(filename, ImaheFormat.Jpeg);
根据MSDN关于Image.FromFile
文档,此方法锁定文件。
该文件将保持锁定,直到处理完映像为止。
所以如果你使用这样的东西
var image = Image.Load(fileName);
// ...
image.Save(fileName)
因为文件仍处于锁定状态,它将引发异常。
您可以通过以下方式解决此问题:不使用此方法加载图像,而是使用带有Stream
参数的重载之一:
Image image;
using (var stream = File.OpenRead(fileName))
{
image = Image.FromStream(stream);
}
// ...
image.Save(fileName);
使用上面的代码我没有任何问题,但是Image.FromStream
的文档说
您必须在图像的生命周期内保持流打开。
如果遇到任何问题,可以将文件加载到MemoryStream
并保持打开状态。
假设Filename =“ c:\\ 1.jpg”,更改保存文件;
img1.Save(“ c:\\ 2.jpg”,ImageFormat.Jpeg); m_image.Save(“ c:\\ 3.jpg”,ImageFormat.Jpeg); 确保您具有写权限。
我有以下示例运行完美
Image m_image = Image.FromFile(Filename);
Bitmap b = new Bitmap(m_image.Width, m_image.Height);
Graphics g = Graphics.FromImage((Image)b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(m_image, 0, 0, m_image.Width, m_image.Height);
Image img1 = (Image)b;
img1.Save("C:\\1.jpg", ImageFormat.Jpeg);
m_image.Save("C:\\2.jpg", ImageFormat.Jpeg);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.