Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 为Xamarin表单生成二维码图像流或字节_Xamarin.forms_Qr Code_Zxing.net - Fatal编程技术网

Xamarin.forms 为Xamarin表单生成二维码图像流或字节

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

我正在努力将QR条形码生成为
字节[]
或流(我可以在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);