Xamarin.forms 为Xamarin表单生成二维码图像流或字节
我正在努力将QR条形码生成为Xamarin.forms 为Xamarin表单生成二维码图像流或字节,xamarin.forms,qr-code,zxing.net,Xamarin.forms,Qr Code,Zxing.net,我正在努力将QR条形码生成为字节[]或流(我可以在XAML图像源上使用的东西) 中兴网 我试过使用Zxing.Net,但我发现文档不是很好。 事实上,在xamarin forms类库中安装时,我可以进行编译,但一旦我添加一些代码来编写条形码,就会出现编译错误,说明 Can not resolve reference: `zxing`, referenced by `MyXamarinFormsClassLibrary`. Please add a NuGet package or assembl
字节[]
或流(我可以在XAML图像源上使用的东西)
中兴网
我试过使用Zxing.Net,但我发现文档不是很好。
事实上,在xamarin forms类库中安装时,我可以进行编译,但一旦我添加一些代码来编写条形码,就会出现编译错误,说明
Can not resolve reference: `zxing`, referenced by `MyXamarinFormsClassLibrary`. Please add a NuGet package or assembly reference for `zxing`, or remove the reference to `Sasw.AforoPass`. 0
那个图书馆有点怪怪的
我正在做一个简单的例子,比如:
var options = new QrCodeEncodingOptions
{
DisableECI = true,
CharacterSet = "UTF-8",
Width = 250,
Height = 250
};
var writer = new BarcodeWriter<Image>();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;
var result = writer.Write("foo");
MyImage.Source = result.Source;
该解决方案使用QrCoder库,对Xamarin的形式很好,如下所示
private byte[] GetQrImageAsBytes()
{
var randomText = Guid.NewGuid().ToString();
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(randomText, QRCodeGenerator.ECCLevel.L);
var qRCode = new PngByteQRCode(qrCodeData);
var qrCodeBytes = qRCode.GetGraphic(20);
return qrCodeBytes;
}
使用此实现的工作示例库可以做到这一点,但不使用项目主页中的as:
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("The text which should be encoded.", QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData); // This point onwards is problematic
Bitmap qrCodeImage = qrCode.GetGraphic(20); // This will throw not supported exception
将最后两行切换到:
var qrCode = new PngByteQRCode(qrCodeData);
byte[] imageByteArray = qrCode.GetGraphic(20);
您将获得字节数组,但您可以在以后将其转换为流或任何您喜欢的格式。谢谢,我将按照示例进行尝试。尽管它使用的库与我使用的库相同,但生成了平台不受支持的异常。但它看起来很有希望回购!您可以在答案中分享您的解决方案,并对其进行标记,这将帮助更多的人解决相同的问题:)。
var qrCode = new PngByteQRCode(qrCodeData);
byte[] imageByteArray = qrCode.GetGraphic(20);