当前位置: 首页 > news >正文

System.Drawing.Common.Bitmap跨平台的替代方案

使用SkiaSharp

SkiaSharp是Skia Graphics Library的.Net跨平台实现,它可以在Windows,macOS,Linux,iOS,Android和其他平台上使用。

例如需要Linux版,则安装第一个和第四个:

以下是使用SkiaSharp创建位图的示例代码:

// 创建位图
using (var surface = SKSurface.Create(new SKImageInfo(width, height)))
{// 获取画布var canvas = surface.Canvas;// 绘制位图内容canvas.DrawRect(new SKRect(0, 0, width, height), new SKPaint() { Color = SKColors.White });canvas.DrawText("Hello, SkiaSharp!", new SKPoint(20, 50), new SKPaint() { Color = SKColors.Black });// 将位图转换为字节数组var image = surface.Snapshot();var data = image.Encode().ToArray();// 加载到内存流中或保存到文件中
}

以上示例创建了一个空白的位图,并在其中绘制文本。你可以使用其他SKCanvas的绘制方法,如画线、绘制形状等。

当然,如果你已经有一个System.Drawing.Bitmap对象并且想要将它转换为SkiaSharp位图,你可以使用以下代码:

using (var stream = new MemoryStream())
{// 将System.Drawing.Bitmap转换为SkiaSharp位图bitmap.Save(stream, ImageFormat.Png);stream.Position = 0;var codec = SKCodec.Create(stream);// 创建位图并从流中解码using (var surface = SKSurface.Create(new SKImageInfo(codec.Info.Width, codec.Info.Height))){var canvas = surface.Canvas;canvas.DrawBitmap(SKBitmap.Decode(codec), new SKRect(0, 0, codec.Info.Width, codec.Info.Height));var image = surface.Snapshot();var data = image.Encode().ToArray();// 加载到内存流中或保存到文件中}
}

在这个示例中,我们将System.Drawing.Bitmap对象保存到内存流中,然后使用Sk……


引自:System.Drawing.Common.Bitmap跨平台的替代方案-火山引擎
此外推荐一个好文:
杂谈 System.Drawing.Common 的跨平台性(关键词:libgdiplus / .NET Core / Mono / Win32 / Linux / ……) - walterlv

http://www.lryc.cn/news/194930.html

相关文章:

  • 深入理解 Java 泛型
  • 【基础篇】七、Flink核心概念
  • 06-Scala面向对象
  • 【设计模式】单例模式、“多例模式”的实现以及对单例的一些思考
  • idea 2022 一个工作空间下导入git项目 后 无法导入第二个git项目
  • 泛在电力物联网的关键技术与未来发展策略-安科瑞黄安南
  • iWall:支持自定义的Mac动态壁纸软件
  • 【Docker 内核详解】namespace 资源隔离(四):Mount namespace Network namespace
  • STM32简介
  • Yum安装JDK11
  • [HNCTF 2022 WEEK2]ez_ssrf题目解析
  • OpenFOAM: twoPhaseEulerFoam解读
  • ffmpeg跨平台arm编译-ubuntu
  • Vue 网络处理 - axios 异步请求的使用,请求响应拦截器
  • 单目3D目标检测——MonoDLE 模型训练 | 模型推理
  • CSS悬停卡片翻转明信片效果源码附注释
  • 使用kaliber与imu_utils进行IMU、相机+IMU联合标定
  • 统一观测丨使用 Prometheus 监控 SQL Server 最佳实践
  • 最短无序连续子数组
  • 更新 | 持续开源迅为RK3568驱动指南第十二篇-GPIO子系统
  • centos7安装erlang23.3.4.11及rabbitmq3.9.16版本
  • VMware和Debian下载
  • mysql面试题48:MySQL中 Innodb的事务与日志的实现方式
  • 数据结构 优先级队列(堆)
  • 如何在edge浏览器中给PDF添加文字批注
  • 集成学习的小九九
  • 深入理解Scrapy
  • 想做WMS仓库管理系统,找了好久才找到云表
  • 公司销售个人号如何管理?
  • COLE HERSEE 48408 工业4.0、制造业X和元宇宙