.Net Core上用于代替System.Drawing的类库
目前.Net Core上没有System.Drawing这个类库,想要在.Net Core上处理图片得另辟蹊径。
微软给出了将来取代System.Drawing的方案,偏向于使用一个单独的服务端进行各种图片处理
https://github.com/dotnet/corefx/issues/2020
https://github.com/imazen/Graphics-vNext
但目前仍然没有一个可用的实现。
下面我介绍一些目前确实可用于代替System.Drawing的类库,包括我发布的ZKWeb.System.Drawing
ImageProcessor
地址: https://github.com/JimBobSquarePants/ImageProcessor/
从3.0开始支持了.Net Core。
支持的很全面,如果只用于转换缩放图片,或手动处理像素的话可以最优先考虑这个类库。
但是不支持描画验证码等描画类的功能,在将来会支持,可见https://github.com/JimBobSquarePants/ImageProcessor/issues/264。
因为作者尚未把3.0发布到nuget,安装需要添加myget的源。
如何添加myget的源可以参考https://www.myget.org/nuget。
添加后使用nuget安装ImageProcessorCore
即可。
CoreCompat
地址: https://github.com/CoreCompat/CoreCompat
这个类库使用了mono的System.Drawing实现,只要安装了之前使用System.Drawing的代码完全不用修改。
也支持描画验证码等描画类的功能。
如果需要linux或osx支持,可以安装runtime.linux.CoreCompat.System.Drawing
和runtime.osx.10.10-x64.CoreCompat.System.Drawing
。
ZKWeb.System.Drawing
地址: https://github.com/zkweb-framework/zkweb.system.drawing
这个类库是我在使用CoreCompat后感到不满意而重新创建的一个类库,也是从mono的System.Drawing修改得来。
这个类库和CoreCompat的不同点如下
没有使用强名称,CoreCompat为了让程序集名称一样使用了一个伪造的签名,但是导致Asp.Net和Owin等会检查签名的旧项目启动失败
CoreCompat的项目如果直接下载编译会出现100多个错误,大多是类型找不到的错误,我也不知道作者是怎么编译过去的
这个项目从mono 4.6.1.13复制了所有需要的文件并修改,直接下载编译就可以通过可以使用dotnet test跑单元测试,目前通过率约为80%
实际在linux上测试过并且给出了各个发行版安装libgdiplus的命令,目前已测试
Ubuntu Server 16.04 LTS 64bit
Fedora 24 64bit
CentOS 7.2 64bit
不引用System.Drawing.Primitive,因为System.Drawing.Primitive在.Net Framework下同时引用了原来的System.Drawing,有可能导致编译时类型冲突(实测只有警告)
ZKWeb.System.Drawing这个类库在有更好的代替方案之前将会一直维护,如果使用中遇到问题或错误欢迎到项目地址提出issue。
原文地址:http://www.cnblogs.com/zkweb/p/5999205.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
.Net Core上用于代替System.Drawing的类库相关推荐
- Net core中使用System.Drawing对上传的图片流进行压缩
由于net core 中默认没有System.Drawing,可以通过nuget下载一个来代替System.Drawing.Common 直接压缩图片 /// <summary> /// ...
- [译]如何在.NET Core中使用System.Drawing?
你大概知道System.Drawing,它是一个执行图形相关任务的流行的API,同时它也不属于.NET Core的一部分.最初是把.NET Core作为云端框架设计的,它不包含非云端相关API.另一方 ...
- .Net Core 之 图形验证码 本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。...
本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能. 通过测试的系统: Windows 8.1 64bit Ubuntu Server 16.04 LTS 64 ...
- linux docker 中使用 System.Drawing.Common 异常 System.Drawing.Common 仅在 Windows 上受支持
System.Drawing.Common NuGet 包现在被归类为特定于 Windows 的库.为非 Windows 操作系统编译时,平台分析器会在编译时发出警告. 在非 Windows 操作系统 ...
- .net core 使用 ZKWeb.system.drawing 在centos下使用gdi 画图
使用ZKWeb.system.drawing 背景 system.Drawing.Common 和 ZKWeb 的比较 项目中引用ZKWeb CentOS 中环境搭建 CentOS 字体库安装 1.拷 ...
- IronPDF for .NET图像提取,System.Drawing 位图和图像对象
IronPDF for .NET图像提取,System.Drawing 位图和图像对象 IronPDF for .NET 允许开发人员在 C#.F# 和 VB.Net 中为 .NET Core 和 . ...
- System.Drawing.Common workaround in .NET6
System.Drawing.Common workaround in .NET6 Intro 最近有不少小伙伴在升级 .NET 6 时遇到了 System.Drawing.Common 的问题,同时 ...
- System.Drawing is not supported on this platform
在跨平台编程中很有可能会遇到一些库执行不正确的问题,比如,我在用NuGet引入库的时候就遇到了类似问题.我引入System.Drawing.Common.dll到UWP工程中,编码的时候并没有报错,但 ...
- C#中怎样获取System.Drawing.Color的所有颜色对象并存到数组中
场景 需要在生成一组多条曲线时,随机从一颜色数组中取颜色,至少一百种颜色以上. 而System.Drawing.Color自带140多种颜色 那么怎样将其自带的颜色对象取出并存在数组中. 注: 博客主 ...
最新文章
- Final变量的含义
- boost::subgraph用法的测试程序
- yolov4Linux,基于Darknet的YOLOv4目标检测
- 人类为啥比小鼠发育更慢?同日两篇《科学》找到意想不到的原因
- Mobile Terminal无法使用常用Unix命令
- python中if的输入格式_Python基础之输出格式和If判断
- 成功编译Webkit-cairo
- python xpath循环_Python爬虫 爬取北京二手房数据
- 使用python+机器学习方法进行情感分析(详细步骤)
- CVPR 2021奖项出炉:最佳论文花落马普所,何恺明获提名,首届黄煦涛纪念奖颁布
- AJAX技术开发Back按钮问题的应用程序
- 前端页面插入Flash动画
- Excel 公式复制同步到其他单元格
- 陶博士-选股思路-如何应用月线反转
- arukas.io免费搭建个人私有***方式
- 快递鸟即时查询(PHP)
- android手机线控失效,耳机线控失效 苹果iOS 10.0.2终于修好了
- T20,寻寻觅觅冷冷清清凄凄惨惨切切。。。
- 论文阅读_中文医学预训练模型_MC-BERT
- 硬件-3-家庭联网常用设备
热门文章
- ueditor 编辑器再thinkphp中使用 解决转义问题
- [Yii Framework] spl_autoload_register 导致加载顺序冲突
- 淘宝快捷通道——百汇家园
- 【贯穿】.NET6结合Docker傻瓜式实现容器编排
- Task.Factory.StartNew 和 Task.Factory.FromAsync 有什么区别?
- 验证规则构建神器 FluentValidation.md
- 手把手教你学Dapr - 5. 状态管理
- 一文说通Dotnet的委托
- 使用 Xunit.DependencyInjection 改造测试项目
- dotnet 从零开始写一个人工智能 网络模型