用netcore来生成前端微信Native支付的二维码。
1、首先CentOS7.0要安装 libgdiplus ,命令如下:yum install libgdiplus-devel ,然后重启netcore服务。//这个地方要注意,网上有不少例子的下载命令是错的,有的时候安装不上。
2、Vs代码使用QRCoder库,代码如下
public static MemoryStream GerQrCodeStream(string paystr,int pixels = 2)
{
QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(paystr, QRCodeGenerator.ECCLevel.Q);
QRCoder.QRCode qrcode = new QRCoder.QRCode(qrCodeData);
// qrcode.GetGraphic 方法可参考最下发“补充说明”
var qrCodeImage = qrcode.GetGraphic(pixels);
MemoryStream ms = new();
qrCodeImage.Save(ms, format: ImageFormat.Png);//这个地方会提示 Imager.Save仅在windows上受支持。可以不用管。不是错误。
return new MemoryStream(ms.GetBuffer());
}
3、核心问题:System.Drawing.Common.dll必须要降到6.0。之前用System.Drawing.Common.dll 8.0版本一直不成功,报
The type initializer for "Gdip" threw an exception.System.PlatformNotSupportedException: System.Drawing.Common is not supported on non-Windows platforms.
QRCoder库是1.4.1
项目的目标框架是net6.0 。估计是需要与目标框架一致才可以用System.Drawing.Common