Giới thiệu
SkiaSharp là một thư viện đồ họa mã nguồn mở dành cho .NET, được phát triển dựa trên Google Skia. Đây là công cụ vẽ 2D mạnh mẽ, hoạt động trên nhiều nền tảng như Windows, macOS, Linux, Android, iOS, và WebAssembly.
Github: https://github.com/mono/SkiaSharp
SkiaSharp cung cấp các bindings đa nền tảng cho
- .NET Standard 1.3
- .NET Core
- .NET 6
- Tizen
- Android
- iOS
- tvOS
- macOS
- Mac Catalyst
- WinUI 3 (Windows App SDK / Uno Platform)
- Windows Classic Desktop (Windows.Forms / WPF)
- Web Assembly (WASM)
- Uno Platform (iOS / macOS / Android / WebAssembly)
Tại sao dùng SkiaSharp?
Thật ra lý do mình sử dụng SkiaSharp là muốn thay thế System.Drawing cho dự án .NET Framework. Có 1 số thư viện thay thế khác nhưng SkiaSharp vẫn hỗ trợ .NET Framework tới năm 2025
Lý do tiếp theo là dễ dàng mở rộng, hỗ trợ gradient, blur, noise, effects…
Cài đặt SkiaSharp
Nếu bạn đang sử dụng .NET Framework 4.8 / .NET 9+
Install-Package SkiaSharp
Install-Package SkiaSharp.NativeAssets.Win32
Hiện tại mình vẫn chưa sử dụng được SkiaSharp version 3.x cho project .NET Framework, bị error DllNotFoundException. Bạn có thể sử dụng phiên bản cũ hơn 2.88.9
Ví dụ
Dưới đây là đoạn code Hello SkiaSharp:static void Main(string[] args)
{
int width = 400, height = 200;
using (var surface = SKSurface.Create(new SKImageInfo(width, height)))
{
var canvas = surface.Canvas;
canvas.Clear(SKColors.White); // Set background color
using (var paint = new SKPaint())
{
paint.Color = SKColors.Blue;
paint.TextSize = 40;
paint.IsAntialias = true;
paint.Typeface = SKTypeface.FromFamilyName("Arial", SKFontStyle.Bold);
// Draw text
canvas.DrawText("Hello Nhatkyhoctap!", 50, 100, paint);
}
// Save image
using (var image = surface.Snapshot())
using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
{
File.WriteAllBytes("output.png", data.ToArray());
Console.WriteLine("Image saved: output.png");
}
}
}
Giải thích:
- Vẽ chữ bằng SKCanvas.DrawText()
- Save image bằng method PNG bằng SKImage.Encode()
=> Kết quả: Một hình ảnh chứa chữ "Hello SkiaSharp!" trên nền trắng.
Thêm Noise vào ảnh
Noise (nhiễu) trong đồ họa máy tính là các điểm hoặc họa tiết ngẫu nhiên được thêm vào hình ảnh để làm rối mắt, tạo hiệu ứng đặc biệt hoặc gây khó khăn cho OCR
Sau khi Draw text xong, bạn thêm đoạn code sau:Random random = new Random();
using (var noisePaint = new SKPaint { Color = SKColors.Gray })
{
for (int i = 0; i < 150; i++)
{
float x = random.Next(0, width);
float y = random.Next(0, height);
canvas.DrawPoint(x, y, noisePaint);
}
}
Hi vọng với những đoạn code nhỏ này, có thể giúp bạn sử dụng SkiaSharp ở những bước đầu tiên
Nhatkyhoctap's blog
Nhận xét
Đăng nhận xét