.NET 8 高性能跨平臺圖像處理庫 ImageSharp 詳解
前言
傳統(tǒng)的 System.Drawing 庫功能豐富,但存在平臺限制,不適用于跨平臺開發(fā)。.NET 8 的發(fā)布,ImageSharp 成為了一個更好的選擇。
ImageSharp 是一個完全開源、高性能且跨平臺的圖像處理庫,專為 .NET 設計。它提供豐富的圖像處理功能和出色的性能,適用于桌面應用、Web 應用和云端服務。
本文將介紹 ImageSharp 的主要特點和基本用法,幫助大家快速上手這個強大的工具。
項目介紹
一款完全托管的高性能、跨平臺圖形庫,支持在任何 .NET 6+ 環(huán)境中安裝和使用。它適用于多種場景,包括設備端、云端、嵌入式和物聯(lián)網(wǎng)等。
ImageSharp 功能豐富且使用簡單,常見的操作只需幾行代碼即可完成。它支持多種圖像格式,如 JPEG、BMP、GIF、PNG、TIFF、WebP 和 QOI 等。同時,它支持超過 25 種像素格式,并提供元數(shù)據(jù)編輯(如 IPTC、EXIF、XMP)和色彩空間轉換(如 RGB、CMYK、灰度、CIELab)功能。
另外,ImageSharp 提供了超過 40 種常見的圖像處理操作,性能出色且內(nèi)存友好,能夠處理任意尺寸的圖像,包括數(shù)百萬像素的大圖。
項目使用
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調(diào)整圖像大小
/// <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(): 保存圖像到文件。
- 調(diào)整圖像大小
- Resize(): 改變圖像的尺寸。
- 裁剪圖像
- Crop(): 裁剪圖像到指定的矩形區(qū)域。
- 旋轉和翻轉圖像
- Rotate(): 旋轉圖像一定的角度。
- Flip(): 水平或垂直翻轉圖像。
- 應用濾鏡和效果
- Grayscale(): 將圖像轉換為灰度。
- GaussianBlur(): 應用高斯模糊效果。
- Sharpen(): 銳化圖像。
- 調(diào)整亮度、對比度和飽和度
- Brightness(): 調(diào)整圖像的亮度。
- Contrast(): 調(diào)整圖像的對比度。
- Saturate(): 調(diào)整圖像的飽和度。
- 繪制圖像和文本
- DrawImage(): 在圖像上繪制另一幅圖像。
- DrawText(): 在圖像上繪制文本。
- 像素操作
- ProcessPixelRows(): 提供對圖像像素行的低級訪問。
- 圖像格式轉換
- Image.DetectFormat(): 檢測圖像的格式。
- Image.Load() 和 Image.SaveAsFormat(): 加載和保存特定格式的圖像。
- 圖像元數(shù)據(jù)處理
- Metadata: 訪問和修改圖像的元數(shù)據(jù)。
常用濾鏡
- Grayscale (灰度濾鏡): 將圖像轉換為灰度,移除顏色信息,只保留亮度信息。
- BlackWhite (黑白濾鏡): 將圖像轉換為嚴格的黑白兩色。
- Sepia (棕褐色濾鏡): 給圖像應用一種棕褐色調(diào),模仿舊照片的風格。
- Invert (反轉濾鏡): 反轉圖像中的所有顏色。
- GaussianBlur (高斯模糊濾鏡): 對圖像應用高斯模糊,可用于創(chuàng)建柔化效果或減少圖像噪聲。
- Sharpen (銳化濾鏡): 增強圖像的邊緣對比度,使圖像看起來更清晰。
- Vignette (暈影濾鏡): 在圖像的邊緣添加暗角效果,通常用于吸引觀看者的注意力到圖像的中心。
- Brightness (亮度濾鏡): 調(diào)整圖像的亮度。
- Contrast (對比度濾鏡): 調(diào)整圖像的對比度。
- Saturate (飽和度濾鏡): 調(diào)整圖像的飽和度。
- Hue (色調(diào)濾鏡): 調(diào)整圖像的色調(diào)。
- Pixelate (像素化濾鏡): 將圖像分割成大塊的像素,創(chuàng)建一種像素藝術效果。
- OilPaint (油畫濾鏡): 模仿油畫的筆觸效果。
- Glow (發(fā)光濾鏡): 在圖像周圍添加一層柔和的光暈。
- BokehBlur (背景虛化濾鏡): 創(chuàng)建一種模仿攝影中背景虛化(散景)的效果。
- DetectEdges (邊緣檢測濾鏡): 檢測并突出顯示圖像中的邊緣。
- Polaroid (色調(diào)分離濾鏡): 減少圖像中顏色的數(shù)量,創(chuàng)建一種類似于復古海報的效果。
項目地址
GitHub:https://github.com/SixLabors/ImageSharp
總結
ImageSharp 是一個功能強大的 .NET 圖像處理庫,提供了廣泛的圖像操作選項,包括加載、保存、調(diào)整大小、旋轉、翻轉以及應用各種濾鏡和效果。
本文示例僅展示了 ImageSharp 功能的一部分,通過使用ImageSharp庫大家可以在項目中輕松實現(xiàn)復雜的圖像處理任務。
到此這篇關于.NET 8 高性能跨平臺圖像處理庫 ImageSharp 的文章就介紹到這了,更多相關.NET 8 高性能跨平臺內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
從請求管道深入剖析HttpModule的實現(xiàn)機制圖文介紹
想要了解底層的原理必須對請求處理過程和頁面的生命周期有點了解才方便您入門學習一下內(nèi)容,本文將詳細介紹2012-11-11asp.net Javascript獲取CheckBoxList的value
最近在做一個BS的小項目,記得自己搞asp.net的時候,還是兩年以前,大部分的東西只是有點印象,忘得差不多了,所以這次也算是溫習的過程吧,一邊學習,一邊趕工,呵呵呵。。。。2009-12-12ASP.NET連接 Access數(shù)據(jù)庫的幾種方法
這篇文章主要介紹了ASP.NET連接 Access數(shù)據(jù)庫的幾種方法,每種方法都非常不錯,具有參考借鑒價值,需要的朋友一起學習吧2016-08-08Asp.net core WebApi 使用Swagger生成幫助頁實例
本篇文章主要介紹了Asp.net core WebApi 使用Swagger生成幫助頁實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04asp.net core 獲取 MacAddress 地址方法示例
這篇文章主要介紹了asp.net core獲取MacAddress地址方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02asp.net 實現(xiàn)動態(tài)顯示當前時間(不用javascript不考慮開銷)
asp.net實現(xiàn)動態(tài)顯示時間,無需用到javascrip,而是用了AJAX。2009-11-11