# ImageProcessingLib **Repository Path**: ttkea/image-processing-lib ## Basic Information - **Project Name**: ImageProcessingLib - **Description**: 基于 SkiaSharp 的高性能图像处理类库,适用于 .NET Standard 2.0 及以上项目。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-26 - **Last Updated**: 2025-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ```markdown # ImageProcessingLib 使用说明 ImageProcessingLib 是一个基于 SkiaSharp 的高性能图像处理类库,适用于 .NET Standard 2.0 及以上项目。该库支持: - 同步与异步图像加载 - 多线程并行批量处理 - 图像压缩(控制最大 KB) - 支持多种格式:.jpg, .jpeg, .png, .bmp, .gif, .webp - 日志记录功能(可扩展) ## 功能概述 - **同步与异步图像加载**:支持同步和异步方式加载图像。 - **多线程并行批量处理**:可使用多线程并行处理多张图像,提高处理效率。 - **图像压缩**:能够对图像进行压缩,并可控制最大输出大小(单位:KB)。 - **支持多种格式**:支持 .jpg、.jpeg、.png、.bmp、.gif、.webp 等多种常见图像格式。 - **日志记录功能**:具备日志记录功能,并且可以进行扩展。 ## 类库结构 `ILogger` 接口和 `ConsoleLogger` 类:日志记录接口和实现类,用于记录处理过程中的信息和错误。 ## 使用步骤 ### 1. 配置选项 在使用类库之前,需要配置图像处理的相关选项。可以通过 `ImageProcessingOptions` 类来进行配置,示例代码如下: ```csharp using ImageProcessingLib.Configuration; // 配置选项 var options = new ImageProcessingOptions { MaxKB = 500, // 图像最大输出大小(单位 KB),-1 表示不限制 UseParallelProcessing = true, // 是否启用多线程并行处理 SupportedFormats = new List { ".jpg", ".jpeg", ".png" } // 支持的图像格式列表 }; ``` ### 2. 初始化日志器和处理器 配置好选项后,需要初始化日志器和处理器。可以使用 `ConsoleLogger` 类作为日志器,示例代码如下: ```csharp using ImageProcessingLib; using ImageProcessingLib.Logging; // 初始化日志器和处理器 var logger = new ConsoleLogger(); var processor = new ImageProcessor(options, logger); ``` ### 3. 同步处理图像 使用 `processor.GetLatestImagesAsBytes` 方法可以同步处理指定目录下的最新图像,示例代码如下: ```csharp string imagePath = @"C:\Your\PhotoDirectory"; // 同步处理 var syncResult = processor.GetLatestImagesAsBytes(imagePath, 10); Console.WriteLine($"同步共处理 {syncResult.Count} 张图片。"); ``` ### 4. 异步并行处理图像 使用 `processor.GetLatestImagesAsBytesParallelAsync` 方法可以异步并行处理指定目录下的最新图像,示例代码如下: ```csharp // 异步并行处理 var asyncResult = await processor.GetLatestImagesAsBytesParallelAsync(imagePath, 10); ``` ## 完整示例代码 ```csharp using System; using System.Threading.Tasks; using ImageProcessingLib; using ImageProcessingLib.Logging; using ImageProcessingLib.Configuration; using ImageProcessingLib.Models; class Program { static async Task Main(string[] args) { // 配置选项 var options = new ImageProcessingOptions { MaxKB = 500, // 图像最大输出大小(单位 KB),-1 表示不限制 UseParallelProcessing = true, // 是否启用多线程并行处理 SupportedFormats = new List { ".jpg", ".jpeg", ".png" } // 支持的图像格式列表 }; // 初始化日志器和处理器 var logger = new ConsoleLogger(); var processor = new ImageProcessor(options, logger); string imagePath = @"C:\Your\PhotoDirectory"; // 同步处理 var syncResult = processor.GetLatestImagesAsBytes(imagePath, 10); Console.WriteLine($"同步共处理 {syncResult.Count} 张图片。"); // 异步并行处理 var asyncResult = await processor.GetLatestImagesAsBytesParallelAsync(imagePath, 10); } } ``` ## 注意事项 - **依赖项**:类库依赖于 SkiaSharp 库,确保项目中已经正确安装了该依赖项。 ```