通過 C# 抖動 DICOM
使用服務器端 API 構建您自己的 .NET 應用程序以抖動 DICOM 文件。
如何使用 C# 抖動 DICOM 文件
有效優化網頁放置圖像對於確保流暢的用戶體驗至關重要。這種優化的一種方法涉及減少圖像的調色板,從而減小其文件大小並縮短頁面加載時間。然而,為了防止平滑顏色梯度被破壞以及單色區域中出現尖銳邊界,必須採用圖像平滑功能(稱為抖動)。該技術允許您向圖像或照片引入控制量的“噪點”,從而通過平滑色域內的過渡並增強圖像的整體視覺吸引力來產生積極的效果。為了抖動 DICOM 文件,我們將使用 Aspose.Imaging for .NET API 是一個功能豐富、功能強大且易於使用的 C# 平台圖像處理和轉換 API。打開 NuGet 包管理器,搜索 Aspose.Imaging 並安裝。您也可以從包管理器控制台使用以下命令。
包管理器控制台命令
PM> Install-Package Aspose.Imaging
通過 C# 抖動 DICOM 的步驟
你需要 aspose.imaging.dll 在您自己的環境中嘗試以下工作流程。
- 使用 Image.Load 方法加載 DICOM 文件 +抖動圖像;
- 以 Aspose.Imaging 支持的格式將壓縮圖像保存到光盤
系統要求
所有主要操作系統都支持 .NET 的 Aspose.Imaging。只需確保您具有以下先決條件。
- Microsoft Windows 或與 .NET Framework、.NET Core、Windows 應用程序、ASP.NET Web 應用程序兼容的操作系統。
- Microsoft Visual Studio 等開發環境。
- Aspose.Imaging for .NET 在您的項目中引用。
抖動 DICOM 圖像 - .NET
using Aspose.Imaging; | |
using Aspose.Imaging.FileFormats.Bmp; | |
using Aspose.Imaging.FileFormats.Dicom; | |
using Aspose.Imaging.FileFormats.Emf; | |
using Aspose.Imaging.FileFormats.Jpeg; | |
using Aspose.Imaging.FileFormats.Jpeg2000; | |
using Aspose.Imaging.FileFormats.Png; | |
using Aspose.Imaging.FileFormats.Psd; | |
using Aspose.Imaging.FileFormats.Tiff.Enums; | |
using Aspose.Imaging.ImageFilters.FilterOptions; | |
using Aspose.Imaging.ImageOptions; | |
using Aspose.Imaging.Masking; | |
using Aspose.Imaging.Masking.Options; | |
using Aspose.Imaging.Masking.Result; | |
using Aspose.Imaging.Sources; | |
using System; | |
using System.Collections.Generic; | |
using System.IO; | |
using System.Linq; | |
string templatesFolder = @"c:\Users\USER\Downloads"; | |
ThresholdDithering(); | |
void FloydSteinbergDithering() | |
{ | |
FilterImages(image => | |
{ | |
//https://apireference.aspose.com/imaging/net/aspose.imaging/ditheringmethod | |
image.Dither(DitheringMethod.FloydSteinbergDithering, 4); | |
}, "floydsteinbergdithering"); | |
} | |
void ThresholdDithering() | |
{ | |
FilterImages(image => | |
{ | |
//https://apireference.aspose.com/imaging/net/aspose.imaging/ditheringmethod | |
image.Dither(DitheringMethod.ThresholdDithering, 4); | |
}, "thresholddithering"); | |
} | |
void FilterImages(Action<RasterImage> doFilter, string filterName) | |
{ | |
List<string> rasterFormats = new List<string>() { "jpg", "png", "bmp", "apng", "dicom", | |
"jp2", "j2k", "tga", "webp", "tif", "gif", "ico" }; | |
List<string> vectorFormats = new List<string>() { "svg", "otg", "odg", "eps", "wmf", "emf", "wmz", "emz", "cmx", "cdr" }; | |
List<string> allFormats = new List<string>(rasterFormats); | |
allFormats.AddRange(vectorFormats); | |
allFormats.ForEach( | |
formatExt => | |
{ | |
var inputFile = Path.Combine(templatesFolder, $"template.{formatExt}"); | |
bool isVectorFormat = vectorFormats.IndexOf(formatExt) > -1; | |
//Need to rasterize vector formats before background remove | |
if (isVectorFormat) | |
{ | |
inputFile = RasterizeVectorImage(formatExt, inputFile); | |
} | |
var outputFile = Path.Combine(templatesFolder, $"{filterName}_{formatExt}.png"); | |
Console.WriteLine($"Processing {formatExt}"); | |
using (var image = (RasterImage)Image.Load(inputFile)) | |
{ | |
doFilter(image); | |
//If image is multipage save each page to png to demonstrate results | |
if (image is IMultipageImage multiPage && multiPage.PageCount > 1) | |
{ | |
for (var pageIndex = 0; pageIndex < multiPage.PageCount; pageIndex++) | |
{ | |
string fileName = $"{filterName}_page{pageIndex}_{formatExt}.png"; | |
multiPage.Pages[pageIndex].Save(templatesFolder + fileName, new PngOptions()); | |
File.Delete(templatesFolder + fileName); | |
} | |
} | |
else | |
{ | |
image.Save(outputFile, new PngOptions()); | |
File.Delete(outputFile); | |
} | |
} | |
//Remove rasterized vector image | |
if (isVectorFormat) | |
{ | |
File.Delete(inputFile); | |
} | |
} | |
); | |
} | |
string RasterizeVectorImage(string formatExt, string inputFile) | |
{ | |
string outputFile = Path.Combine(templatesFolder, $"rasterized.{formatExt}.png"); | |
using (var image = Image.Load(inputFile)) | |
{ | |
image.Save(outputFile, new PngOptions()); | |
} | |
return outputFile; | |
} |
關於 .NET API 的 Aspose.Imaging
Aspose.Imaging API 是一種圖像處理解決方案,用於在應用程序中創建、修改、繪製或轉換圖像(照片)。它提供:跨平台的圖像處理,包括但不限於各種圖像格式之間的轉換(包括統一的多頁或多幀圖像處理)、繪圖等修改、使用圖形基元、轉換(調整大小、裁剪、翻轉和旋轉) 、二值化、灰度、調整)、高級圖像處理功能(過濾、抖動、遮罩、去偏斜)和內存優化策略。它是一個獨立的庫,不依賴任何軟件進行圖像操作。可以在項目中使用原生 API 輕鬆添加高性能圖像轉換功能。這些是 100% 私有的本地 API,圖像在您的服務器上處理。通過在線應用程序抖動 DICOM
通過訪問我們的 Live Demos 網站 抖動 DICOM 文檔。 現場演示有以下好處
DICOM 什麼是 DICOM 文件格式
DICOM 是 Digital Imaging and Communications in Medicine 的首字母縮寫詞,屬於醫學信息學領域。 DICOM 是文件格式定義和網絡通信協議的結合。 DICOM 使用 .DCM 擴展名。 .DCM 以兩種不同的格式存在,即格式 1.x 和格式 2.x。 DCM Format 1.x 還提供兩個普通版本和擴展版本。 DICOM 用於集成來自不同供應商的打印機、服務器、掃描儀等醫療成像設備,還包含每個患者的唯一識別數據。如果 DICOM 文件能夠接收 DICOM 格式的圖像數據,則它們可以在兩方之間共享。 DICOM的通信部分是應用層協議,實體之間使用TCP/IP進行通信。 HTTP 和 HTTPS 協議用於 DICOM 的 Web 服務。 Web 服務支持的版本是 1.0、1.1、2 或更高版本。
閱讀更多其他支持的抖動格式
使用 C#,可以輕鬆地抖動不同的格式,包括。