.net core 的图片处理及二维码的生成及解析
写代码这事,掐指算来已经十有余年。
从html到css到javascript到vbscript到c#,从兴趣到职业,生活总是失落与惊喜并存。
绝大部分时候,出发并不是因为知道该到哪里去,只是知道不能再逗留下去了,如此而已。受过风吹雨打之后会有很多独有的感受及思考,主见开始生发并在摇摆中坚定,想来这就是成长了,嗯……就算是成长吧,呵呵!
话说微软的 .net core 3.0 即将发布了,作为一个码农,还是要关心一下的。从 .net core 2.0 及MySql官方开始支持 .net core 起,我尝试将自己的类库转成 .net standard 类库,开始了解 .net core 的成熟度,写了几个 demo ,之后就放弃了,因为我做的项目还是以web(asp.net core)为主,但是 .net core 对图片的处理是空白的,System.Drawing只是一个摆设(估计以后也是一样),即便是有很多人推崇的 ImageSharp 也因为接口变化过大且缺少文档在稍作尝试之后放弃了,我想,在 .net core 下应该还没有一个成熟的图片处理类库,还不足以迁移项目。如果按微软官方的意思要搞一个独立的图片处理应用来进行图片处理,那 asp.net core 只是作为一个简单的数据接口来用,这就很值得权衡一下了,毕竟中小型项目要去搞一个专门的图片处理应用是得不偿失的,不知道微软的产品和工程师们是否有过这些思量?又或者只是所谓的企业级应用才是他们的目标?
我假设 System.Drawing 在 .net core 中的下场就像 IE 浏览器和 Edge 浏览器在Win10 后的下场一样,也许该放弃了。那就找个替代方案吧,所以最终决定采用 SkiaSharp 来做图片处理,顺便处理一下二维码,毕竟也是图片嘛,并且二维码在天朝是很有场景可用的,之前在 .net framework 中我一致习惯用 ThoughtWorks.QRCode 来处理二维码的生成和解析,不过目前 ThoughtWorks.QRCode 好像还不支持在 .net core 中工作,因此二维码的生成和解析最后采用 ZXing.Net 来处理。
用 ZXing.Net 生成的二维码默认是有一定比例的白边的,大概算是一种工业标准,但是在实际的应用场景中有时候可能不需要白边,所以我对白边做了一点逻辑处理,对白边可以指定要保留的宽度像素值也可以保留原始的默认白边。
通过引用 SkiaSharp(1.68.0) 和 ZXing.Net(0.16.4) ,之后写了一个静态类,用来对图片进行缩放和裁剪等基本操作以及生成和解析二维码,代码如下:
View Code
开个控制台程序测试一下,测试代码:
View Code
程序运行结果:
图片处理结果:
最后的图片质量还是挺好的,如果你也有在 .net core 下的图片处理需求,可以试试这个处理方式!
以后会陆续将自己写的一些小东西发出来和大家一起分享,多半都是一些零零碎碎的东西,目的在于解决实实在在的具体的问题,希望对各位来过的朋友有所帮助!https://www.cnblogs.com/ruzi/p/10140754.html