我有一个 ASP.NET C# 页面,我正在其中调整文件夹中图像的大小。我正在使用 GDI+ 来执行此操作。我想调整图像大小并替换为旧图像。
因此,当我尝试使用现有名称保存时,Save 方法会抛出错误。但如果我给出不同的名称,它就会被保存。但我希望新创建的调整大小的图像具有相同的文件名,因为我需要用调整大小的新文件覆盖现有文件。我怎样才能继续前进?
我的代码是:
oldImagePath= oldImagePath.Replace(".jpg", "NEW.jpg");
try
{
ImageCodecInfo[] Info = ImageCodecInfo.GetImageEncoders();
EncoderParameters Params = new EncoderParameters(1);
Params.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
target.Save(oldImagePath, Info[1], Params);
}
如果我注释为目标文件创建新名称的第一行,它将不起作用,否则它将起作用。但我想要同名。我怎样才能做到这一点?
如果您使用以下行中的技术加载图像
Image imgPhoto = Image.FromFile("myphoto.jpg");
那么这会使该文件的句柄保持打开状态,因此当您尝试覆盖它时,该文件当前仍在使用中,因此您无法写入它。
为了解决这个问题,如果将文件加载到流中,则可以覆盖原始文件,因为图像信息已写入内存,文件句柄已被释放。
您可以通过以下方式执行此操作:
FileStream fs = new FileStream("myphoto.jpg", FileMode.Open);
Image imgPhoto = Image.FromStream(fs);
fs.Close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)