首页 > 其他分享 >.NET 8 高性能跨平台图像处理库 ImageSharp

.NET 8 高性能跨平台图像处理库 ImageSharp

时间:2024-11-06 19:21:37浏览次数:1  
标签:10 .. 跨平台 滤镜 图像 NET ImageSharp

合集 - .NET 开源项目(27)   1.推荐一款界面优雅、功能强大的 .NET + Vue 权限管理系统08-052..NET 开源权限认证项目 MiniAuth上线08-063..NET 与 LayUI 实现高效敏捷开发框架08-084..NET 8 + Blazor 多租户、模块化、DDD框架、开箱即用08-095.推荐一个优秀的 .NET MAUI 组件库08-136..NET 7 + Vue 权限管理系统 小白快速上手08-157..NET 权限工作流框架 TOP 榜07-308..NET 8 高并发微服务电商系统实战08-299..NET 8.0 前后分离快速开发框架09-0210..NET 开源工业级移动端仓库管理系统09-1811..NET 8 + Vue/UniApp 高性能前后端分离框架09-2412..NET 7+Angular 4 轻量级新零售进销存系统09-2013..NET 代码混淆工具-JIEJIE.NET10-0914..NET 实现的交互式 OA 系统10-1015..NET 8 实现无实体库表 API 部署服务10-1216..NET +Vue 开源在线考试系统10-1517.C# 并发控制框架:单线程环境下实现每秒百万级调度10-1618..NET 7+Vue 3 开源仓库管理系统 ModernWMS10-1719..NET 开源餐饮系统支持桌面与Web版10-1820..NET 开源扁平化、美观的 C/S 控件库10-2521..NET + 微信小程序开源多功能电商系统10-2822..NET 8.0 开源在线考试系统(支持移动端)10-2923..NET 实现的零部件离散型 MES+WMS 系统10-3024.推荐一个 ASP.NET Core 的轻量级插件框架10-3125..NET 高性能异步套接字库,支持多协议、跨平台、高并发11-0426..NET 全能高效的 CMS 内容管理系统11-05 27..NET 8 高性能跨平台图像处理库 ImageSharp11-06 收起  

阅读目录

前言

传统的 System.Drawing 库功能丰富,但存在平台限制,不适用于跨平台开发。.NET 8 的发布,ImageSharp 成为了一个更好的选择。

ImageSharp 是一个完全开源、高性能且跨平台的图像处理库,专为 .NET 设计。它提供丰富的图像处理功能和出色的性能,适用于桌面应用、Web 应用和云端服务。

本文将介绍 ImageSharp 的主要特点和基本用法,帮助大家快速上手这个强大的工具。

项目介绍

一款完全托管的高性能、跨平台图形库,支持在任何 .NET 6+ 环境中安装和使用。它适用于多种场景,包括设备端、云端、嵌入式和物联网等。

ImageSharp 功能丰富且使用简单,常见的操作只需几行代码即可完成。它支持多种图像格式,如 JPEG、BMP、GIF、PNG、TIFF、WebP 和 QOI 等。同时,它支持超过 25 种像素格式,并提供元数据编辑(如 IPTC、EXIF、XMP)和色彩空间转换(如 RGB、CMYK、灰度、CIELab)功能。

另外,ImageSharp 提供了超过 40 种常见的图像处理操作,性能出色且内存友好,能够处理任意尺寸的图像,包括数百万像素的大图。

项目使用

1、安装依赖库

首先需要将其添加到自己的项目中。通过NuGet包管理器安装是最简单的方式,具体如下所示:

Install-Package SixLabors.ImageSharp

或者 VS 直接搜索安装

2、加载图片

使用ImageSharp加载图像非常简单。

复制代码
/// <summary>
/// 加载图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LoadImage_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog
    {
        Filter = "Image Files|*.jpg;*.jpeg;*.png;*.bmp;*.gif"
    };

    if (openFileDialog.ShowDialog() == true)
    {
        using (FileStream fs = new FileStream(openFileDialog.FileName, FileMode.Open))
        {
            _image = SixLabors.ImageSharp.Image.Load<Rgba32>(fs);
            ImageControl.Source = ConvertToBitmapSource(_image);
        }
    }
}
复制代码

3、裁剪图片

使用ImageSharp调整图像大小

复制代码
/// <summary>
/// 裁剪图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CropImage_Click(object sender, RoutedEventArgs e)
{
    if (_image != null)
    {
        _image.Mutate(x => x.Crop(new SixLabors.ImageSharp.Rectangle(100, 100, 200, 200)));
        ImageControl.Source = ConvertToBitmapSource(_image);
    }
}
复制代码

4、旋转图片

ImageSharp也可以轻松地旋转和翻转图像。

复制代码
/// <summary>
/// 选择图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void RotateImage_Click(object sender, RoutedEventArgs e)
{
    if (_image != null)
    {
        _image.Mutate(x => x.Rotate(90));
        ImageControl.Source = ConvertToBitmapSource(_image);
    }
}
复制代码

5、运行效果

还有更多效果和方法,大家可以自己试试。

常用方法

  • 加载和保存图像
  • Image.Load(): 加载图像文件。
  • Image.Save(): 保存图像到文件。
  • 调整图像大小
  • Resize(): 改变图像的尺寸。
  • 裁剪图像
  • Crop(): 裁剪图像到指定的矩形区域。
  • 旋转和翻转图像
  • Rotate(): 旋转图像一定的角度。
  • Flip(): 水平或垂直翻转图像。
  • 应用滤镜和效果
  • Grayscale(): 将图像转换为灰度。
  • GaussianBlur(): 应用高斯模糊效果。
  • Sharpen(): 锐化图像。
  • 调整亮度、对比度和饱和度
  • Brightness(): 调整图像的亮度。
  • Contrast(): 调整图像的对比度。
  • Saturate(): 调整图像的饱和度。
  • 绘制图像和文本
  • DrawImage(): 在图像上绘制另一幅图像。
  • DrawText(): 在图像上绘制文本。
  • 像素操作
  • ProcessPixelRows(): 提供对图像像素行的低级访问。
  • 图像格式转换
  • Image.DetectFormat(): 检测图像的格式。
  • Image.Load() 和 Image.SaveAsFormat(): 加载和保存特定格式的图像。
  • 图像元数据处理
  • Metadata: 访问和修改图像的元数据。

常用滤镜

  • Grayscale (灰度滤镜): 将图像转换为灰度,移除颜色信息,只保留亮度信息。
  • BlackWhite (黑白滤镜): 将图像转换为严格的黑白两色。
  • Sepia (棕褐色滤镜): 给图像应用一种棕褐色调,模仿旧照片的风格。
  • Invert (反转滤镜): 反转图像中的所有颜色。
  • GaussianBlur (高斯模糊滤镜): 对图像应用高斯模糊,可用于创建柔化效果或减少图像噪声。
  • Sharpen (锐化滤镜): 增强图像的边缘对比度,使图像看起来更清晰。
  • Vignette (晕影滤镜): 在图像的边缘添加暗角效果,通常用于吸引观看者的注意力到图像的中心。
  • Brightness (亮度滤镜): 调整图像的亮度。
  • Contrast (对比度滤镜): 调整图像的对比度。
  • Saturate (饱和度滤镜): 调整图像的饱和度。
  • Hue (色调滤镜): 调整图像的色调。
  • Pixelate (像素化滤镜): 将图像分割成大块的像素,创建一种像素艺术效果。
  • OilPaint (油画滤镜): 模仿油画的笔触效果。
  • Glow (发光滤镜): 在图像周围添加一层柔和的光晕。
  • BokehBlur (背景虚化滤镜): 创建一种模仿摄影中背景虚化(散景)的效果。
  • DetectEdges (边缘检测滤镜): 检测并突出显示图像中的边缘。
  • Polaroid (色调分离滤镜): 减少图像中颜色的数量,创建一种类似于复古海报的效果。

项目地址

GitHub:https://github.com/SixLabors/ImageSharp

总结

ImageSharp 是一个功能强大的 .NET 图像处理库,提供了广泛的图像操作选项,包括加载、保存、调整大小、旋转、翻转以及应用各种滤镜和效果。

本文示例仅展示了 ImageSharp 功能的一部分,通过使用ImageSharp库大家可以在项目中轻松实现复杂的图像处理任务。

希望本文能在图像处理开发方面为各位提供有益的帮助。期待大家在评论区留言交流,分享您的宝贵经验和建议。

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!优秀是一种习惯,欢迎大家留言学习!

 

2024-11-06 19:18:02【出处】:https://www.cnblogs.com/1312mn/p/18528685

=======================================================================================

标签:10,..,跨平台,滤镜,图像,NET,ImageSharp
From: https://www.cnblogs.com/mq0036/p/18530876

相关文章

  • 基于卷积神经网络的柑桔病害识别与防治系统,resnet50,mobilenet模型【pytorch框架+pytho
     更多目标检测和图像分类识别项目可看我主页其他文章功能演示:柑橘病害识别与防治系统,卷积神经网络,resnet50,mobilenet【pytorch框架,python源码】_哔哩哔哩_bilibili(一)简介基于卷积神经网络的柑桔病害识别与防治系是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,......
  • netdxf中创建一个新的自定义视图
    需求是我想使用netdxf创建一个文件,插入一个长方体块进去,保存文件后打开就是我想要的视图,例如一个等二测的角度谢谢惊惊,南胜,鸿,和尚,大佬们关键1:DxfDocument.Viewport.ViewDirection关键2:向量与大小无关,只要等比例即可获取原图形中的视图角度,使用ifox的代码如下......
  • PROFINET中的冗余系统
    两个相互独立的冗余分类系统冗余SR介质冗余MRP这是两个功能完全独立且不冲突的概念,是两个完全无关的冗余功能;系统冗余系统冗余SR是指IO设备通过PROFINET与两个容错的CPU(HCPU)之间进行通讯连接。该通讯连接可以通过任何可拓扑的互连来建立,并不局限于环网拓扑,对交换机也......
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.7-4.
    目录第四门课卷积神经网络(ConvolutionalNeuralNetworks)第四周特殊应用:人脸识别和神经风格转换(Specialapplications:Facerecognition&Neuralstyletransfer)4.7深度卷积网络学习什么?(WhataredeepConvNetslearning?)4.8代价函数(Costfunction)第四门课卷......
  • .NET使用SqlSugar实现单列批量更新的几种实现和对比
    说明:SqlSugarCore版本:5.1.4.169方式1使用SqlSugar的Updateable特点:代码可读性好,易于维护支持事务和异常处理适用场景:中小型数据量更新优点:代码简洁易于调试缺点:性能相对较低内存占用较大publicasyncTask<int>BatchUpdateColumnAsync(stringtab......
  • .net文件转Base64
    看publicclassFileUtil{///<summary>///文件转换成Base64字符串///</summary>///<paramname="fileName">文件绝对路径</param>///<returns></returns>publicstaticStringFileToBase64(stringfil......
  • .Net Core NPOI 导出多级表头
     想要导出这样的表格 数据准备格式   附上源码1usingNPOI.HSSF.UserModel;2usingNPOI.SS.UserModel;3usingNPOI.SS.Util;4usingSystem.Data;5usingSystem.Text.RegularExpressions;67namespaceTestConsoleApp8{9//......
  • 基于Arcgis10.8+VS2019的ArcObjectsSDKNet安装
    基于Arcgis10.8+VS2019的ArcObjectsSDKNet安装首先Arcgis10.8和Arcgis10.8.1所需要的ArcObjectsSDKNet版本是不同的在使用10.8的ArcObjectsSDKNet在Arcgis10.8.1的基础上是安装不了的,会检测不到在安装Arcgis10.8的基础上,下载Arcgis10.8的ArcObjectsSDKNet,解压后进行安装连接......
  • .NET周刊【11月第1期 2024-11-03】
    国内文章.NET9AOT的突破-支持老旧Win7与XP环境https://www.cnblogs.com/lsq6/p/18519287.NET9引入了AOT支持,使得应用程序能够在编译时优化,以在老旧Windows系统上运行。这项技术通过静态编译,消除运行时的JIT编译,加速程序执行。尽管Windows7和XP已不再主流,它们......
  • M4)_16. Kinetis K系列的未来发展趋势
    16.KinetisK系列的未来发展趋势随着技术的不断进步,KinetisK系列单片机(MCU)也在不断地发展和演进。本节将探讨KinetisK系列的未来发展趋势,包括性能提升、功耗优化、安全性增强、生态系统扩展以及新兴应用领域的探索。16.1性能提升KinetisK系列基于ARMCortex-M4内核......