当前位置: 代码网 > it编程>编程语言>Asp.net > .NET 8 高性能跨平台图像处理库 ImageSharp 详解

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

2024年11月25日 Asp.net 我要评论
前言传统的 system.drawing 库功能丰富,但存在平台限制,不适用于跨平台开发。.net 8 的发布,imagesharp 成为了一个更好的选择。imagesharp 是一个完全开源、高性能

前言

传统的 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库大家可以在项目中轻松实现复杂的图像处理任务。

到此这篇关于.net 8 高性能跨平台图像处理库 imagesharp 的文章就介绍到这了,更多相关.net 8 高性能跨平台内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com