WorkCamera/client/WorkCameraExport/Services/Interfaces/IImageService.cs
2026-01-05 23:58:56 +08:00

68 lines
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace WorkCameraExport.Services.Interfaces
{
/// <summary>
/// 图片服务接口 - 负责图片下载和处理
/// </summary>
public interface IImageService : IDisposable
{
#region
/// <summary>
/// 下载单张图片
/// </summary>
/// <param name="url">图片 URL</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>图片字节数组</returns>
Task<byte[]?> DownloadImageAsync(string url, CancellationToken cancellationToken = default);
/// <summary>
/// 批量并发下载图片
/// </summary>
/// <param name="urls">图片 URL 列表</param>
/// <param name="outputDir">输出目录</param>
/// <param name="concurrency">并发数</param>
/// <param name="progress">进度回调(已下载数量)</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>下载结果字典URL -> 本地文件路径,失败的为 null</returns>
Task<Dictionary<string, string?>> DownloadImagesAsync(
List<string> urls,
string outputDir,
int concurrency,
IProgress<int>? progress = null,
CancellationToken cancellationToken = default);
#endregion
#region
/// <summary>
/// 压缩图片
/// </summary>
/// <param name="imageData">原始图片数据</param>
/// <param name="quality">压缩质量 (1-100)</param>
/// <returns>压缩后的图片数据</returns>
byte[] CompressImage(byte[] imageData, int quality);
/// <summary>
/// 缩放图片
/// </summary>
/// <param name="imageData">原始图片数据</param>
/// <param name="width">目标宽度</param>
/// <param name="height">目标高度</param>
/// <returns>缩放后的图片数据</returns>
byte[] ResizeImage(byte[] imageData, int width, int height);
/// <summary>
/// 压缩并缩放图片
/// </summary>
/// <param name="imageData">原始图片数据</param>
/// <param name="width">目标宽度</param>
/// <param name="height">目标高度</param>
/// <param name="quality">压缩质量 (1-100)</param>
/// <returns>处理后的图片数据</returns>
byte[] CompressAndResizeImage(byte[] imageData, int width, int height, int quality);
#endregion
}
}