首页 新闻 会员 周边

如何使用 C# System.Drawing.Bitmap可以在linux运行

0
[待解决问题]

C# 使用 System.Drawing.Bitmap可以在linux运行
我使用的是.net core 在bitmap 处理的时候 基于windows 系统是可以的,但在 linux系统上存在问题,有没有大佬知道怎么解决的

小白码农CV的主页 小白码农CV | 菜鸟二级 | 园豆:204
提问于:2023-07-25 15:56
< >
分享
所有回答(4)
1

我们用的是 SkiaSharp https://github.com/mono/SkiaSharp

System.Drawing.Common 不支持 linux ,详见 System.Drawing.Common only supported on Windows

dudu | 园豆:30925 (高人七级) | 2023-07-25 16:11
0

听一楼的,好使

码农白里黑 | 园豆:205 (菜鸟二级) | 2023-07-25 17:16
0

不支持
用过:https://github.com/SixLabors/ImageSharp

talentzemin | 园豆:761 (小虾三级) | 2023-07-26 14:27
0

在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环境中运行。

Technologyforgood | 园豆:6170 (大侠五级) | 2023-07-26 20:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册