Asp.net core 学习笔记 Image processing (ImageSharp)

2021/6/14 20:23:00

本文主要是介绍Asp.net core 学习笔记 Image processing (ImageSharp),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

.net 的生态烂是真的, 很多硬需求都没有人做, 开源的做着做着就闭源了的也很多. 

今天说说 image processing 

早年都是用 system.draw, 但由于它依赖 windows, 后来 .net core 来了就有其它 player 进来完了.

https://devblogs.microsoft.com/dotnet/net-core-image-processing/

2017 年的时候就有好几个选择, 当时很多还不成熟, 有些不能跨平台, 或者部分平台可以而已. 

https://www.reddit.com/r/dotnet/comments/lmknjq/net_core_image_processing_2021_edition/

2021 年有人对上面几个做了更新. 

这里我主要记入一下我的 research 

 

Magick.NET

是我目前用着的. Magick 是一个图像处理程序, 用 c 语言写的. 1999 年成立的公司. 

Magick.NET 是 Magick 的核心成员做出来的 port. 目前整个项目只有他一个人在维护. 

很强大, 该有的功能都有. 只是风险大了一些. 毕竟不是什么大公司, 人员也很少. 

 

SkiaSharp

mono team 维护, 依靠 Google Skia 渲染. 功能很强. 也是属于 port 的 level. 比起 Magick.Net 风险少了很多.

毕竟背靠大公司吗, 哪怕团队小不是主菜, 也不会太糟糕. 

 

ImageSharp

明日之星, 优点就是完全 c# 从 0 开发, 不依赖任何东西. 牛啊. 但是还很年轻. 

很多功能都没有. 比如 webp 和 progressive jpeg 在 github issue 上最多 thumb. (webp 下一个版本就会支持了. )

 

不管怎样, 火的东西都得试一试, 给点支持嘛. 真的不行大不了用 SkiaSharp 啦. 

这里记入一下它的常用方法. 

 

官网 https://docs.sixlabors.com/articles/imagesharp/index.html?tabs=tabid-1

首先安装 nuget 

dotnet add package SixLabors.ImageSharp

基本的 load image, 查看 width, height, exif 

var fileFullPath = @"C:\keatkeat\projects\stooges-lib\stooges-aspnetcore\Project\wwwroot\uploaded-files\vertical-huawei.jpg";
using var image = Image.Load(fileFullPath);
var w = image.Width;
var h = image.Height;
var exifOrientation = image.Metadata.ExifProfile.GetValue(ExifTag.Orientation);
image.Mutate(x => x.AutoOrient()); // 转了之后 orientation 就是 1 了

image.mutate 就是直接修改图, .Clone 就是先复制一份.

AutoOrient 就是依据 exif orientation 来旋转和 flip 图片, 很方便, 不需要自己搞. (refer: https://www.cnblogs.com/keatkeat/p/7532183.html)

转换之后 exif orientation 会变成 1 (哪怕之前是 0, 比如 hua wei 手机是 0)

 



这篇关于Asp.net core 学习笔记 Image processing (ImageSharp)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程