gpt4 book ai didi

c# - 我怎样才能打开一个位图文件,更改它然后保存它?

转载 作者:行者123 更新时间:2023-11-30 20:58:09 25 4
gpt4 key购买 nike

我试图打开一个位图文件,然后更改它并保存它,但出现了一些错误。代码如下:

var tempFileNamePath = Path.Combine(workingDirectory, fileName);
Bitmap image = new Bitmap(tempFileNamePath);
var newImage = (Bitmap)image.Clone();
image.Dispose();

newImage.EnhanceImage();
newImage.Save(tempFileNamePath, System.Drawing.Imaging.ImageFormat.Jpeg);
newImage.Dispose();

但是保存文件失败,报错:A generic error happens in GDI+

有没有想过为什么会这样?

最佳答案

Bitmap.Clone() 并没有如您所愿。它是一个副本,它仍然使用原始图像的像素数据。所以处理原始图像不会释放文件上的锁。

要获得副本,请使用 Bitmap(Image) 构造函数:

Bitmap newImage = null;
using (var image = new Bitmap(tempFileNamePath)) {
newImage = new Bitmap(image);
}

重命名原始文件是使用较少内存的廉价替代方案,当图像较大时支持此方法:

newImage.EnhanceImage();
var tmpname = tempFileNamePath + ".bak";
System.IO.File.Delete(tmpname);
System.IO.File.Move(tempFileNamePath, tmpname);
try {
newImage.Save(tempFileNamePath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch {
System.IO.File.Move(tmpname, tempFileNamePath);
throw;
}
finally {
newImage.Dispose();
}
System.IO.File.Delete(tmpname);

关于c# - 我怎样才能打开一个位图文件,更改它然后保存它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16316451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com