我已经将我的项目从。net框架升级到。net 6 (core)。在我的项目中,有很多地方使用位图。我在微软文档中读到System.Drawing.Common只支持Windows平台,即使在添加了EnableUnixSupport配置后,它也不会在net7中被支持。现在我使用imagessharp。web。我有这样一个场景,我将文件保存为Image(格式为。tiff),然后从该路径读取为位图,并保存为PNG(由于某些业务规则)以下是我尝试更改的代码行:
Bitmap.FromFile(completePath).Save(pngPath, ImageFormat.Png);
这是我转换成的代码。唯一的问题是如何保存为一个新的文件名,因为Tiff文件在文件名中有Tiff。
string extension = _GetExtension(img.ContentType);
if (extension == Constants.TiffExtension)
{
fileName = fileName.Replace(Constants.TiffExtension, "PNG");
using (var outputStream = new FileStream(completePath, FileMode.CreateNew))
{
var image = SixLabors.ImageSharp.Image.Load(completePath);
image.SaveAsync(outputStream, new PngEncoder()); //how to save new file name?
}
}
可以使用image.Save(fileName);
过载将图像保存到文件中。只需要一个路径的文件名过载将根据文件扩展名自动选择正确的编码器。
我正在使用imagessharp。Web包,而我需要的是基本的ImageSharp包。特别感谢@James South的指正和@tocsoft的指导。
我已经通过以下代码修复了它:
if (extension == Constants.Conversion.TiffExtension)
{
using (SixLabors.ImageSharp.Image image = SixLabors.ImageSharp.Image.Load(completePath))
{
string pngPath = completePath.Replace(Constants.Conversion.TiffExtension, Conversion.DefaultExtension);
image.Save(pngPath);
fileName = fileName.Replace(Constants.Conversion.TiffExtension, Conversion.DefaultExtension);
}
}