簡體   English   中英

在Xamarin.Forms應用程序中使用ZXing.Net.Mobile進行二維碼渲染

[英]QR code rendering with ZXing.Net.Mobile in Xamarin.Forms app

我正在嘗試使用ZXing.Net.Mobile將QR碼顯示為圖像。

我很難將從BarcodeWriter.Writer(...)返回的byte[]轉換為圖像進行顯示。

即,這不顯示圖像

public class BarcodePage : ContentPage
{
    public BarcodePage()
    {
        Image image = new Image();

        image.Source = ImageSource.FromStream(() => 
        {
            var writer = new BarcodeWriter 
            {
                Format = BarcodeFormat.QR_CODE,
                Options = new EncodingOptions 
                {
                    Height = 200,
                    Width = 600
                }
            };

            var bitmapBytes = writer.Write ("Some text");
            return new MemoryStream(bitmapBytes);
        });

        Content = image;
    }
}

bitmapBytes字節數組看起來在調試器中具有合理的值,如何將其轉換為圖像以供顯示?

如果我將Image.Source分配更改為:

image.Source = ImageSource.FromUri(new Uri("http://i.imgur.com/q0aIYvC.png"));

然后它確實正確顯示圖像,所以我知道問題不在於Forms布局等。

解決方法

目前,我正在轉換為本機中的MemoryStream,例如我在Android中:

public class BuildQrCodes_Android : IBuildQrCodes
{
    public async Task<MemoryStream> ImageStreamForAsync(string text)
    {
        var writer = new BarcodeWriter 
            {
                Format = ZXing.BarcodeFormat.QR_CODE,
                Options = new EncodingOptions 
                    {
                        Height = 600,
                        Width = 600
                    }
            };

        var bitmap = writer.Write(text);

        var stream = new MemoryStream();
        await bitmap.CompressAsync(Bitmap.CompressFormat.Png, 100, stream);
        stream.Position = 0;

        return stream;
    }
}

然后在Xamarin Forms方面,我有

IBuildQrCodes qrBuilder = /* Service lookup */
var stream = await qrBuilder.ImageStreamForAsync("the text to encode");
return ImageSource.FromStream(() => new MemoryStream(stream.ToArray()));

這是我想要的,所以這是一個可接受的解決方法。

我不確定代碼中的“內容”小部件是什么,但是將“圖像”分配給作為ContentPage成員的表單視圖的圖像類應該可以解決問題。

在XAML中,您將在ContentPage中創建一個Image,即在Form的一個示例中

否則,動態創建一個Image類小部件,通過AddView為您的ContentPage添加您的布局。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM