68 lines
2.5 KiB
C#
68 lines
2.5 KiB
C#
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
|
||
}
|
||
}
|