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

摘要:
这是真的。net的生态系统已经腐烂。许多困难的需求不是由任何人完成的,许多开源的需求是封闭的。今天,图像处理使用系统。但因为它依赖于Windows。netcore来了,其他球员也来了https://devblogs.microsoft.com/dotnet/net-core-image-processing/2017在

.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:keatkeatprojectsstooges-libstooges-aspnetcoreProjectwwwrootuploaded-filesvertical-huawei.jpg";
using var image = Image.Load(fileFullPath);
var w = image.Width;
var h = image.Height;
var exifOrientation = image.Metadata.ExifProfile.GetValue(ExifTag.Orientation);

修改图片 : 

var newImage = image.Clone(imageProcessing =>
{
    imageProcessing.AutoOrient();
    imageProcessing.Resize((int)Decimal.Divide(image.Width, 2), (int)Decimal.Divide(image.Width, 2));
    imageProcessing.Crop(new Rectangle(x: 150, y: 150,  150, height: 150));
    imageProcessing.Rotate(RotateMode.Rotate90);
    imageProcessing.Flip(FlipMode.Vertical);
});
newImage.SaveAsJpeg(
    @"C:keatkeatprojectsstooges-libstooges-aspnetcoreProjectwwwrootuploaded-filesvertical-huawei-croped.jpg", new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder
    {
        Quality = 85
    }
);

Clone 就是复制多一张来改, 如果是直接改的话就把 Clone 换成 .Mutate()

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

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

resize, crop, rotate, flip 都是比较常会用到的. 

它还有一个 crop avatar 的 sample https://github.com/SixLabors/Samples/tree/master/ImageSharp/AvatarWithRoundedCorner

大概就是这样用呗.

免责声明:文章转载自《Asp.net core 学习笔记 Image processing (ImageSharp)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CKEDITOR无缝粘贴wordgitblit安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

详解EBS接口开发之库事务处理带提前发运通知(ASN)采购接收入库-补充

 A) Via ROI Create a ASN [ship,ship] for a quantity =3 on STANDARD PURCHASE ORDER Create via ROI an Advanced Shipment Notice ASN number F-ASN-PO-17646-3for Standard Purchase Ord...

linux Samba 搭建

Sambais a free and open-source software package that provides seamless file and print services to SMB/CIFS clients. Samba is freely available, unlike other SMB/CIFS implementation...

centos7安装.net5.0(core)

[root@vmcentos7 ~]# rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpmRetrieving https://packages.microsoft.com/config/centos/7/packages-microsoft...

在Ubuntu 18.04.3上为PHP 7.4.11安装GD库

在Ubuntu 18.04.3上为PHP 7.4.11安装GD库 参考:https://blog.csdn.net/qq285744011/article/details/104299732 步骤 查看PHP版本: php -v sudo apt-get update sudo apt-get install php7.4-gd 提示已经成功: Se...

impdp expdp 数据导出导入

drop directory mydata; /u01/app/oracle/oradata/xe /u01/app/oracle/oradata/xe/tmpdata create directory mydata as '/u01/app/oracle/oradata/xe/tmpdata'; 从用户osbpm中,导出dmp文件 $ORA...

python报错_couldn't recognize data in image file

一、描述 报错:couldn't recognize data in image file 代码: from tkinter import * root = Tk() theLabel = Label(root,text="dog",justify=LEFT,padx=10) theLabel.pack(side=LEFT) photo = Phot...