.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)和色彩空間轉(zhuǎn)換(如 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、旋轉(zhuǎn)圖片
ImageSharp也可以輕松地旋轉(zhuǎn)和翻轉(zhuǎn)圖像。
/// <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ū)域。
- 旋轉(zhuǎn)和翻轉(zhuǎn)圖像
- Rotate(): 旋轉(zhuǎn)圖像一定的角度。
- Flip(): 水平或垂直翻轉(zhuǎn)圖像。
- 應用濾鏡和效果
- Grayscale(): 將圖像轉(zhuǎn)換為灰度。
- GaussianBlur(): 應用高斯模糊效果。
- Sharpen(): 銳化圖像。
- 調(diào)整亮度、對比度和飽和度
- Brightness(): 調(diào)整圖像的亮度。
- Contrast(): 調(diào)整圖像的對比度。
- Saturate(): 調(diào)整圖像的飽和度。
- 繪制圖像和文本
- DrawImage(): 在圖像上繪制另一幅圖像。
- DrawText(): 在圖像上繪制文本。
- 像素操作
- ProcessPixelRows(): 提供對圖像像素行的低級訪問。
- 圖像格式轉(zhuǎn)換
- Image.DetectFormat(): 檢測圖像的格式。
- Image.Load() 和 Image.SaveAsFormat(): 加載和保存特定格式的圖像。
- 圖像元數(shù)據(jù)處理
- Metadata: 訪問和修改圖像的元數(shù)據(jù)。
常用濾鏡
- Grayscale (灰度濾鏡): 將圖像轉(zhuǎn)換為灰度,移除顏色信息,只保留亮度信息。
- BlackWhite (黑白濾鏡): 將圖像轉(zhuǎn)換為嚴格的黑白兩色。
- Sepia (棕褐色濾鏡): 給圖像應用一種棕褐色調(diào),模仿舊照片的風格。
- Invert (反轉(zhuǎn)濾鏡): 反轉(zhuǎn)圖像中的所有顏色。
- 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)整大小、旋轉(zhuǎn)、翻轉(zhuǎn)以及應用各種濾鏡和效果。
本文示例僅展示了 ImageSharp 功能的一部分,通過使用ImageSharp庫大家可以在項目中輕松實現(xiàn)復雜的圖像處理任務。
到此這篇關于.NET 8 高性能跨平臺圖像處理庫 ImageSharp 的文章就介紹到這了,更多相關.NET 8 高性能跨平臺內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
asp.net GridView中使用RadioButton單選按鈕的方法
這篇文章主要介紹了asp.net GridView中使用RadioButton單選按鈕的方法,結合實例形式總結分析了三種GridView中使用RadioButton單選按鈕的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-07-07
asp.net 下載文件時根據(jù)MIME類型自動判斷保存文件的擴展名
如果我們沒法正確判斷下載源的文件類型的話,就無法保存為正確的文件格式,會給后續(xù)操作及人工閱覽造成困擾。 所幸的是,WebRequest可以給出下載源的MIME信息,這讓我們可以確定文件的真實格式,并以此來決定最終的存儲擴展名。(2009-11-11
.Net Core2.1 WebAPI新增Swagger插件詳解
這篇文章主要給大家介紹了關于.Net Core2.1 WebAPI新增Swagger插件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-07-07
Consul的搭建和.Net5的注冊和獲取方法(Win10簡單版)
Consul?是一個用來實現(xiàn)分布式系統(tǒng)服務發(fā)現(xiàn)與配置的開源工具。接下來通過本文給大家介紹win10下Consul的搭建和.Net5的注冊和獲取方法,感興趣的朋友一起看看吧2022-01-01
ASP.net與SQLite數(shù)據(jù)庫通過js和ashx交互(連接和操作)
這篇文章主要介紹了ASP.net與SQLite數(shù)據(jù)庫通過js和ashx交互(連接和操作),具有一定的參考價值,有興趣的可以了解一下。2017-01-01

