这是代码
[HttpGet("GenerateQrCode")]
public ActionResult<string> GenerateQrCode(string sellername, string vatregistration, string timestamp, string invoiceamount,
string vatamoun)
{
string ltr = ((char)0x200E).ToString();
var seller = ConvertTLV("1", sellername);
var vatno = ConvertTLV("2", vatregistration);
var time = ConvertTLV("3", timestamp);
var invamt = ConvertTLV("4", invoiceamount);
var vatamt = ConvertTLV("5", vatamoun);
var result = seller.Concat(vatno).Concat(time).Concat(invamt).Concat(vatamt).ToArray();
return Ok(new
{
QrCode = Convert.ToBase64String(result)
}) ;
}
我试着做这个
[HttpGet("GenerateQrCode")]
public ActionResult<string> GenerateQrCode(string sellername, string vatregistration, string timestamp, string invoiceamount,
string vatamoun)
{
string ltr = ((char)0x200E).ToString();
var seller = ConvertTLV("1", sellername);
var vatno = ConvertTLV("2", vatregistration);
var time = ConvertTLV("3", timestamp);
var invamt = ConvertTLV("4", invoiceamount);
var vatamt = ConvertTLV("5", vatamoun);
var result = seller.Concat(vatno).Concat(time).Concat(invamt).Concat(vatamt).ToArray();
string QrCode = Convert.ToBase64String(result);
byte[] qrCodeBytes = Convert.FromBase64String(QrCode);
string filePath = "E:/qrcode.png";
using (var stream = new MemoryStream(qrCodeBytes))
{
stream.Position = 0; // Set the position to the beginning of the stream
try
{
Image qrCodeImage = Image.FromStream(stream);
qrCodeImage.Save(filePath, ImageFormat.Png);
}
catch (ArgumentException ex)
{
// Handle the "Parameter is not valid" error
Console.WriteLine("Error: " + ex.Message);
}
}
return Ok(new
{
qrcode = filePath
}) ;
}
首先,字节数组
qrCodeBytes
包含QR码的原始二进制数据,而不是实际的QR图像。因此,尝试直接从它创建 Image
不会给你想要的结果。首先,您必须自行生成二维码。
要将二进制数据转换为图像,您需要使用二维码库从数据生成图像。例如:
using QRCoder;
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(QrCode, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
using (Bitmap bitMap = qrCode.GetGraphic(20))
{
bitMap.Save(filePath, ImageFormat.Png);
}
文件路径需要是完全限定的路径,而不仅仅是文件名。