小能豆

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

javascript

C# 使用 System.Drawing.Bitmap可以在linux运行
我使用的是.net core 在bitmap 处理的时候 基于windows 系统是可以的,但在 linux系统上存在问题,


阅读 42

收藏
2024-07-03

共1个答案

小能豆

在 .NET Core 上使用 System.Drawing.Bitmap 时,Linux 系统可能会遇到问题。这是因为 System.Drawing 依赖于 GDI+,而 GDI+ 是 Windows 特有的图形库。为了解决这个问题,可以使用其他跨平台的图形库,如 SkiaSharpImageSharp

使用 SkiaSharp

SkiaSharp 是一个跨平台的 2D 图形库,基于 Google 的 Skia 库。它提供了类似于 System.Drawing 的功能,并且可以在 Windows、Linux 和 macOS 上运行。

  1. 安装 SkiaSharp

使用 NuGet 安装 SkiaSharp 包:

bash dotnet add package SkiaSharp

  1. 使用 SkiaSharp 处理图像

下面是一个使用 SkiaSharp 处理图像的示例:

```csharp
using SkiaSharp;
using System.IO;

class Program
{
static void Main(string[] args)
{
// Load an image from a file
using (var inputStream = File.OpenRead(“input.png”))
{
var bitmap = SKBitmap.Decode(inputStream);

           // Perform some operations on the bitmap
           using (var canvas = new SKCanvas(bitmap))
           {
               var paint = new SKPaint
               {
                   Color = SKColors.Red,
                   StrokeWidth = 5
               };
               canvas.DrawLine(0, 0, bitmap.Width, bitmap.Height, paint);
           }

           // Save the modified image to a file
           using (var outputStream = File.OpenWrite("output.png"))
           {
               bitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100);
           }
       }
   }

}
```

使用 ImageSharp

ImageSharp 是另一个跨平台的图像处理库,专门为 .NET 开发,提供了丰富的图像处理功能,并且在性能上也有不错的表现。

  1. 安装 ImageSharp

使用 NuGet 安装 ImageSharp 包:

bash dotnet add package SixLabors.ImageSharp

  1. 使用 ImageSharp 处理图像

下面是一个使用 ImageSharp 处理图像的示例:

```csharp
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using System.IO;

class Program
{
static void Main(string[] args)
{
// Load an image from a file
using (Image image = Image.Load(“input.png”))
{
// Perform some operations on the image
image.Mutate(x => x.DrawLines(Color.Red, 5, new PointF[] { new PointF(0, 0), new PointF(image.Width, image.Height) }));

           // Save the modified image to a file
           image.Save("output.png");
       }
   }

}
```

总结

在 .NET Core 上进行跨平台图像处理时,推荐使用 SkiaSharpImageSharp 代替 System.Drawing.Bitmap,因为它们提供了更好的跨平台支持,并且可以在 Windows、Linux 和 macOS 上顺利运行。

2024-07-03