作者:韵丽雅舍现代专业女子养生馆 | 来源:互联网 | 2023-10-11 19:23
引入SkiaSharp的nuget包,注意,如果项目运行到docker里,需要安装SkiaSharp.NativeAssets.Linux.NoDependencies画文字pub
引入SkiaSharp的nuget包,注意,如果项目运行到docker里,需要安装SkiaSharp.NativeAssets.Linux.NoDependencies
//画文字
public static SKImage CreateSKImage(string code)
{
var paint = new SKPaint
{
TextSize = 20f,
IsAntialias = true,
Color = SKColor.Parse("#FFFFFF"),
Typeface = SKTypeface.FromFamilyName("Calibri"),
TextAlign = SKTextAlign.Center
};
var size = new SKRect();
var textWidth = paint.MeasureText(code, ref size);
//根据文字样式计算画布宽度
var bmp = new SKBitmap(Convert.ToInt32(textWidth) + 10, 40);
using (var canvas = new SKCanvas(bmp))
{
canvas.DrawColor(SKColor.Parse("#E53935"));
canvas.DrawText(code, (Convert.ToInt32(textWidth) + 10) / 2f, 25.0f, paint);
return SKImage.FromBitmap(bmp);
}
}
//拼接图片
public static SKImage JoinSKImage(List images)
{
int maxX = 0, maxY = 0;
foreach (var item in images)
{
maxX += item.Width;
if (maxY {
maxY = item.Height;
}
}
var bmp = new SKBitmap(maxX, maxY);
using (var canvas = new SKCanvas(bmp))
{
var currentWidth = 0;
foreach(var image in images)
{
canvas.DrawImage(image, currentWidth, 0);
currentWidth+=image.Width;
}
}
return SKImage.FromBitmap(bmp);
}