项目的 .csproj 文件中添加项目引用
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference
Include="ImageProcess/Ke.ImageProcess.ImageSharp/Ke.ImageProcess.ImageSharp.csproj" />
</ItemGroup>
</Project>注册服务
void RegisterServices(IServiceCollection services)
{
services.AddImageSharp();
}使用服务
public class Service
{
private readonly IImageConverter _converter;
private readonly IImageScaler _scaler;
private readonly IImageWatermarker _imageWatermarker
/// <summary>
/// 构造函数
/// </summary>
/// <param name="converter">图片格式转换服务对象</param>
/// <param name="scaler">图片缩放服务对象</param>
/// <param name="watermarker">图片水印服务对象</param>
public Service(IImageConverter converter, IImageScaler scaler, IImageWatermarker watermarker)
{
_converter = converter;
_scaler = scaler;
_imageWatermarker = watermarker;
}
/// <summary>
/// 图片格式转换
/// </summary>
private async Task ImageConvertAsync()
{
// 注册图片格式转换完成事件
_converter.OnConverted += (sender, e) =>
{
// 图片格式转换完成,设置进度为 100
SetProgress(100);
};
// 执行转换
await _converter.ConvertAsync(new ImageConvertRequest(["C:/1.jpg", "C:/2.jpg"], "D:/Output/", "png")
{
Quality = 90
});
}
/// <summary>
/// 图片缩放
/// </summary>
private async Task ImageScaleAsync()
{
// 缩放执行完毕事件
_scaler.OnScaled += (sender, args) =>
{
SetProgress(100);
};
await _scaler.ScaleAsync(new ImageScaleRequest(["C:/1.jpg", "C:/2.jpg"], "D:/Output/", "png")
{
ScaleMode = ScaleMode.EqualRatio, // 等比缩放
Quality = 90,
Width = 200,
Height = 200,
});
}
/// <summary>
/// 图片水印
/// </summary>
private async Task ImageWatermarkAsync()
{
// 水印执行完毕事件
_imageWatermarker.OnWatermarked += (sender, args) =>
{
SetProgress(100);
};
// 图片水印
await _imageWatermarker.WatermarkAsync(new ImageWatermarkRequest<ImageWatermark>(["C:/1.jpg", "C:/2.jpg"], "D:/Output/", "png")
{
Mode = WatermarkMode.Image, // 图片水印
Watermark = new ImageWatermark("C:/watermark.png"),
// IsTite 为 true 时该项无效
Position = WatermarkPosition.BottomRight,
Opacity = (double)argments.Opacity / 100, // 透明度
Suffix = "-wt", // 输出文件后缀
Rotation = 45, // 水印旋转角度
IsTile = false // 是否平铺水印
});
// 文本水印
await _imageWatermarker.WatermarkAsync(new ImageWatermarkRequest<TextWatermark>(["C:/1.jpg", "C:/2.jpg"], "D:/Output/", "png")
{
Mode = WatermarkMode.Text, // 文本水印
Watermark = new TextWatermark(args.WatermarkText ?? string.Empty)
{
// ImageSharp 可以写安装到系统的字体名称
FontFamily = "Microsoft YaHei",
FontSize = 16, // 字体大小
TextColor = new RgbaColor(200, 200, 200, 50), // 文本颜色
//StrokeColor = new RgbaColor(255, 255, 255, 50),
StrokeWidth = 2,
// BackgroundColor = new RgbaColor(0, 0, 0, 0),
},
// IsTite 为 true 时该项无效
Position = WatermarkPosition.BottomRight,
Opacity = (double)argments.Opacity / 100, // 透明度
Suffix = "-wt", // 输出文件后缀
Rotation = 45, // 水印旋转角度
IsTile = false // 是否平铺水印
});
}
}