.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。
YOYOFx提供的实现
地址: http://www.cnblogs.com/maxzhang1985/p/5584528.html
这个实现专门用于描画验证码,通过PINVOKE调用c++编写的库。
这个可能是最早实现.Net Core图形验证码的方案了。
SkiaSharp
地址: https://github.com/mono/SkiaSharp
这个是xamarin公司因为觉得支持微软的System.Drawing困难而另外开发的图形类库,支持图片编码和解码,支持描画图形。
我没有实际试过但是据评论说可以使用在.Net Core上,有兴趣的可以试试。
.Net Core上用于代替System.Drawing的类库的更多相关文章
- [转].Net Core上用于代替System.Drawing的类库
本文转自:http://www.tuicool.com/wx/iuaINjy 目前.Net Core上没有System.Drawing这个类库,想要在.Net Core上处理图片得另辟蹊径. 微软给出 ...
- 转载(Asp.net Core 中试使用ZKWeb.System.Drawing)
完美 原文Link: https://www.yanning.wang/archives/644.html 记录下做备份. 很少用Linux服务器. 这下可给整的够呛, 特别是按照官网竟然还不行, 所 ...
- .Net Core 使用 System.Drawing.Common 部署到CentOS上遇到的问题
一开始报这个错误:Unable to load shared library 'libdl' 找到libdl安装位置是/usr/lib64: #locate libdl /usr/lib64/libd ...
- [译]如何在.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 ...
- Asp.Net Core使用System.Drawing.Common部署到docker报错问题
Asp.Net Core 2.1发布后,正式支持System.Drawing.Common绘图了,可以用来做一些图片验证码之类的功能.但是把网站部署到docker容器里运行会遇到很多问题,也是非常闹心 ...
- .NET Core System.Drawing.Common 中文乱码的坑
最近在写一个汉字取点阵的程序,最开始是在win环境下运行的,没发现什么异常,然后今天把程序放在centos 下后发现英文正常,中文完全变成两位的字了,最开始是字体的原因 在把宋体等安装到centos ...
- .Net Core 使用 System.Drawing.Common 在CentOS下报错
.Net Core控制台项目,添加了 System.Drawing.Common 引用 #locate libdl /usr/lib64/libdl-2.17.so /usr/lib64/libdl. ...
- 把System.Drawing.Image对象img,在页面的Image控件上显示出来
1.保存到本地,然后调用. //定义文件名 string iname = DateTime.Now.ToString("yyMMddhhmmss"); //保存到服务器,b是 ...
随机推荐
- ASP.NET_各个币种之间的汇率转换(实时)使用Yahoo汇率。
近期开发支付平台的时候有运用到各国的实时汇率之间的转换问题,于是在往上找了很多相关资料,以下就是一些参考网址: 1.提供API接口的网站:https://www.showapi.com:这个网站有提供 ...
- ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”
在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...
- C++中的变长参数
新参与的项目中,为了使用共享内存和自定义内存池,我们自己定义了MemNew函数,且在函数内部对于非pod类型自动执行构造函数.在需要的地方调用自定义的MemNew函数.这样就带来一个问题,使用stl的 ...
- SSH实战 · 唯唯乐购项目(上)
前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...
- linux基础学习笔记
我用的是centOS7.0版本的系统.linux的shell终端窗口类似于wind的command窗口 shell命令提示符格式:用户名@主机名:目录名 提示符 @前面的是已登录的用户名,@之后的为计 ...
- Xshell 连接CentOS服务器解密
平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html Xshell生成密钥key(用于Linux 免密码登录)htt ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
- Python应用03 使用PyQT制作视频播放器
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载. 最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/ ...
- WCF基础
初入职场,开始接触C#,开始接触WCF,那么从头开始学习吧,边学边补充. SOA Service-Oriented Architecture,面向服务架构,粗粒度.开放式.松耦合的服务结构,将应用程序 ...
- 修改session垃圾回收几率
<?php //修改session垃圾回收几率 ini_set('session.gc_probability','1'); ini_set('session.gc_divisor','2'); ...