C# 使用 System.Drawing.Bitmap可以在linux运行
我使用的是.net core 在bitmap 处理的时候 基于windows 系统是可以的,但在 linux系统上存在问题,有没有大佬知道怎么解决的
我们用的是 SkiaSharp https://github.com/mono/SkiaSharp
System.Drawing.Common 不支持 linux ,详见 System.Drawing.Common only supported on Windows
听一楼的,好使
不支持
用过:https://github.com/SixLabors/ImageSharp
在Linux系统上使用C#的System.Drawing.Bitmap可能会出现问题,因为System.Drawing命名空间通常依赖于Windows的GDI+库,而Linux系统上并不支持GDI+。因此,您可能会在运行时遇到异常或错误。
解决方案之一是使用跨平台的图像处理库,如ImageSharp,它是一个.NET Core的开源图像处理库,可以在Linux系统上运行,并且与System.Drawing.Bitmap具有相似的功能。下面是在Linux上使用ImageSharp的基本步骤:
安装ImageSharp: 在项目中安装ImageSharp NuGet包,可以使用NuGet包管理器或者在项目文件(.csproj)中手动添加依赖项。
导入命名空间: 在您的C#代码中,使用using SixLabors.ImageSharp;和using SixLabors.ImageSharp.PixelFormats;导入ImageSharp的命名空间。
图像处理: 使用ImageSharp的API来加载、处理和保存图像。下面是一个简单的示例:
csharp
Copy code
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
public void ProcessImage()
{
// 读取图像
using (Image<Rgba32> image = Image.Load<Rgba32>("path/to/image.jpg"))
{
// 进行图像处理
// 例如:调整大小
image.Mutate(x => x.Resize(image.Width / 2, image.Height / 2));
// 保存图像
image.Save("path/to/processed_image.jpg");
}
}
需要注意的是,ImageSharp和System.Drawing.Bitmap虽然功能相似,但API可能有些许不同,因此您可能需要稍微调整代码以适应ImageSharp的用法。
使用ImageSharp可以避免在Linux上依赖GDI+的问题,使您的图像处理代码能够在跨平台的.NET Core环境中运行。