代码拉取完成,页面将自动刷新
记录自己用的工具库
最低版本是 .NET CORE 3.1 以后会同步跟着 .NET CORE升级 .NETX
建议使用 VS 2019
默认使用 MSSQL数据库 希望你的版本是 2012 以及 以上
现在你可以更方便的连接数据库
如果你需要使用它,请在项目根目录下新建一个 app.config.json 配置文件
它默认读取 DbConnectionStrings:{枚举} 下面的任何一条配置文件 看起来像这样
{
"DbConnectionStrings": {
"Default":"写上你的数据库连接字符串"
}
}
#region 创建模板活码
/// <summary>
/// 自定义字体
/// </summary>
static SKTypeface Font;
/// <summary>
/// 保存DIY活码
/// </summary>
/// <param name="dir"></param>
/// <param name="fileName">保存文件</param>
/// <param name="bgPath">背景地址</param>
/// <param name="qrPath">二维码地址</param>
/// <param name="logoPath">图形地址</param>
/// <param name="title">标题</param>
/// <param name="text">子标题</param>
string CreateDiyImage(string dir, string fileName, string bgPath, string qrPath, string logoPath, string title, string text)
{
if (Font == null)
{
var fontPath = $"{App.WebHostEnvironment.WebRootPath}/Captcha/Font/AlibabaPuHuiTi-2-45-Light.ttf";
using (FileStream fs = File.OpenRead(fontPath))
{
Font = SKTypeface.FromStream(fs);
}
}
//获取背景
var bgMap = SKBitmap.Decode(bgPath);
var bgImageSize = new SKSizeI(1368, 900);
var bgImage = bgMap.Resize(bgImageSize, SKFilterQuality.High);
var mapInfo = new SKImageInfo(1368, 2048);
var map = SKBitmap.FromImage(SKImage.Create(mapInfo));
using var canvas = new SKCanvas(map);
canvas.DrawColor(SKColors.White);
canvas.DrawBitmap(bgImage, 0, 0);
//获取二维码
var qrMap = SKBitmap.Decode(qrPath);
var qrSize = new SKSizeI(qrMap.Width * 2, qrMap.Height * 2);
var qrImage = qrMap.Resize(qrSize, SKFilterQuality.High);
var qrX = (map.Width - qrImage.Width) / 2;
var qrY = (map.Height - bgImage.Height - qrImage.Height) / 2 + bgImage.Height;
canvas.DrawBitmap(qrImage, qrX, qrY);
//二维码LOGO
if (!string.IsNullOrWhiteSpace(logoPath))
{
var logoMap = SKBitmap.Decode(logoPath);
var logoSize = new SKSizeI(160, 160);
var logoImage = logoMap.Resize(logoSize, SKFilterQuality.High);
var logoX = (qrImage.Width - logoImage.Width) / 2 + qrX;
var logoY = (qrImage.Width - logoImage.Width) / 2 + qrY;
canvas.DrawBitmap(logoImage, logoX, logoY);
}
float titleY = 248;
float textX = 120;
float textWidth = mapInfo.Width - (textX * 2);
if (!string.IsNullOrWhiteSpace(title))
{
//标题文字 13
var titlePaint = new SKPaint
{
Color = SKColors.White,
TextSize = 85F,
Typeface = Font,
FakeBoldText = true
};
canvas.DrawText(title, textX, titleY, titlePaint);
}
if (!string.IsNullOrWhiteSpace(text))
{
//子标题 100
var textPaint = new SKPaint
{
Color = SKColors.White,
TextSize = 65F,
Typeface = Font
};
float textLineWidth = 0;
var startIndex = 0;
var textlineHeight = titleY + 150;
for (int i = 0; i < text.Length; i++)
{
textLineWidth += textPaint.MeasureText(text[i].ToString());
if (textLineWidth >= textWidth)
{
var length = startIndex == 0 ? i - startIndex + 1 : i - startIndex;
canvas.DrawText(text.Substring(startIndex, length), textX, textlineHeight, textPaint);
startIndex = i;
textLineWidth = 0;
textlineHeight += 20 + Convert.ToInt32(textPaint.TextSize);
}
if (i == text.Length - 1)
{
canvas.DrawText(text.Substring(startIndex, i - startIndex + 1), textX, textlineHeight, textPaint);
}
}
}
var stream = SKImage.FromBitmap(map).Encode(SKEncodedImageFormat.Png, 100).AsStream();
return _fileFactory.Create(dir, fileName, stream).FilePath;
}
#endregion
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。