在.Net 6之前,我们一般是使用System.Drawing.Common来生成图像。
但在.Net 6平台需要配置,才能在非Windows平台使用System.Drawing.Common。而从.Net 7开始,非Windows不再允许使用,官方也给我们推荐了几个替代库。
今天我们一起来了解下,免费开源图像库:SkiaSharp。
01
项目简介
SkiaSharp是基于Google的Skia图形库的.NET封装,是一个用于2D图像绘制的开源库,无论桌面应用程序、移动应用还是Web应用,都可以使用。
.Net开发人员可以利用这个强大而灵活的跨平台图形库,来实现高质量的图形绘制和渲染。
02
项目特性
**1、跨平台:**支持多种操作系统,包括Windows、macOS、iOS、Android以及其他.NET Core兼容的平台。
**2、高性能:**支持硬件加速技术,提供高效的图形渲染能力,都可以保证在任何平台应用流畅的用户体验;
**3、易用性:**提供了直观的API,使得开发人员可以轻松地在.NET应用程序中绘制各种形状、文本和图像。此外还提供了WPF和WinForms的控件,简化开发难度与工作量。
**4、丰富的图形功能:**除了提供基本的绘图操作,还提供很多复杂的图形效果,如阴影、渐变和纹理。
5、支持多种文本渲染:无论是矢量字体还是位图字体,都提供了强大的文本渲染能力。
**6、社区活跃:**在Github已收获3.9K的Star。
03
使用示例
1、安装依赖库
2、验证码示例代码
using SkiaSharp; //图片宽度 var width = 90; //图片高度 var height = 30; //生成随机验证码 var code = CreateValidateCode(4); // 创建一个SkiaSharp画布 using (var surface = SKSurface.Create(new SKImageInfo(width, height))) { var canvas = surface.Canvas; // 清除画布 canvas.Clear(SKColors.White); // 使用SkiaSharp绘制验证码文本 using (var textPaint = new SKPaint()) { textPaint.Color = SKColors.Black; textPaint.IsAntialias = true; textPaint.TextSize = height * 0.8f; // 设置文本大小 textPaint.StrokeWidth = 3; var textBounds = new SKRect(); textPaint.MeasureText(code, ref textBounds); var xText = (width - textBounds.Width) / 2; var yText = (height - textBounds.Height) / 2 - textBounds.Top; canvas.DrawText(code, xText, yText, textPaint); } // 绘制干扰线 using (var linePaint = new SKPaint()) { // 半透明黑色 linePaint.Color = new SKColor(0, 0, 0, 128); linePaint.StrokeWidth = 1; linePaint.IsAntialias = true; var random = new Random(); for (int i = 0; i < 5; i++) // 绘制5条干扰线 { float x1 = 0; float y1 = random.Next(height); float x2 = width; float y2 = random.Next(height); canvas.DrawLine(x1, y1, x2, y2, linePaint); } } // 保存图像到文件 using (var image = surface.Snapshot()) using (var data = image.Encode()) { File.WriteAllBytes("code.png", data.ToArray()); } } ////// 随机生成验证码 /// /// ///string CreateValidateCode(int len) { // 可选字符集 const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; // 创建一个新的随机数生成器 Random random = new Random(); // 生成验证码 string code = new string(Enumerable.Repeat(chars, len) .Select(s => s[random.Next(s.Length)]).ToArray()); return code; }
3、效果
04
项目地址
https://github.com/mono/SkiaSharp
该开源库,我在 知识星球 的框架教程中也有运用,使用示例如下:
- End -
猜你喜欢
- 15天前(零碳中国·绿色投资蓝皮书)中国"零碳"差旅之路暨"绿色低碳酒店"标准研究项目成果发布会召开
- 15天前(天气预报 华为)2025HDC华为天气上新系统级天气智能体,引领更智能的气象服务
- 15天前(“清透会呼吸”轻松拿捏春日出游氛围感)“清透会呼吸”轻松拿捏春日出游氛围感
- 15天前(曼谷丽思卡尔顿公寓价格)曼谷丽思卡尔顿酒店盛大启幕,开创泰国奢华雅致新纪元
- 15天前(中国最好的避暑山庄)2025中国十大避暑山庄评选揭晓,澳涞山庄夺魁
- 15天前(天津四季酒店开业时间)天津四季酒店邀你开启灿烂暑假
- 15天前(世茂海峡大厦多高)巴西地产高管齐聚厦门世茂海峡大厦 共探超高层建筑锻造经验
- 15天前(“百场黄梅唱响百家景区”示范演出活动在黄山风景区举行)“百场黄梅唱响百家景区”示范演出活动在黄山风景区举行
- 15天前(新西兰旅游局×时差岛:黄觉的“长白云之乡”奇遇)新西兰旅游局×时差岛:黄觉的“长白云之乡”奇遇
- 15天前(芜宣机场国际航班)新华丝路:芜宣机场开通至越南首都河内的国际货运航线
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章