C# 使用 System.Drawing.Bitmap可以在linux运行 我使用的是.net core 在bitmap 处理的时候 基于windows 系统是可以的,但在 linux系统上存在问题,
在 .NET Core 上使用 System.Drawing.Bitmap 时,Linux 系统可能会遇到问题。这是因为 System.Drawing 依赖于 GDI+,而 GDI+ 是 Windows 特有的图形库。为了解决这个问题,可以使用其他跨平台的图形库,如 SkiaSharp 或 ImageSharp。
System.Drawing.Bitmap
System.Drawing
SkiaSharp
ImageSharp
SkiaSharp 是一个跨平台的 2D 图形库,基于 Google 的 Skia 库。它提供了类似于 System.Drawing 的功能,并且可以在 Windows、Linux 和 macOS 上运行。
使用 NuGet 安装 SkiaSharp 包:
bash dotnet add package 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 是另一个跨平台的图像处理库,专门为 .NET 开发,提供了丰富的图像处理功能,并且在性能上也有不错的表现。
使用 NuGet 安装 ImageSharp 包:
bash dotnet add package SixLabors.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 上进行跨平台图像处理时,推荐使用 SkiaSharp 或 ImageSharp 代替 System.Drawing.Bitmap,因为它们提供了更好的跨平台支持,并且可以在 Windows、Linux 和 macOS 上顺利运行。