• 在Windows IoT上生成和识别二维码


    在Windows IoT生成和识别二维码,实际上由于是UWP上实现,所以,理论上,这些生成和识别二维码的方法也可以在其它平台上运行。

    关于二维码的生成有很多库可以实现,比如QRCoder,这个库可以在NuGet中搜索到和引入。

    使用方法:

         /// <summary>
            /// 生成二维码
            /// </summary>
            /// <param name="text">二维码代表的字符串</param>
            /// <returns></returns>
            public async Task<BitmapImage> GenerateQrCode(string text)
            {
                var img = new BitmapImage();
    
                var qrGenerator = new QRCodeGenerator();
                var qrData = qrGenerator.CreateQrCode(text, QRCodeGenerator.ECCLevel.M);
                var qrCode = new BitmapByteQRCode(qrData);
                var qrImage = qrCode.GetGraphic(20);
                using (var stream = new InMemoryRandomAccessStream())
                {
                    using (var writer = new DataWriter(stream.GetOutputStreamAt(0)))
                    {
                        writer.WriteBytes(qrImage);
                        await writer.StoreAsync();
                    }
                    await img.SetSourceAsync(stream);
                }
                return img;
            }

    关于识别二维码,使用QRCoder库似乎无法实现,可以使用ZXing.uwp这个库实现,实际上,这个ZXing.uwp库可以识别和生成二维码和条形码。

    使用方法:

             /// <summary>
            /// 识别二维码
            /// </summary>
            /// <param name="imgFile">二维码图片文件</param>
            /// <returns>二维码代表的图片</returns>
            public async Task<string> ReadQrCode(StorageFile imgFile)
            {
                WriteableBitmap img = await OpenWritableBitmapFile(imgFile);
    
                BarcodeReader reader = new BarcodeReader();
                reader.Options.CharacterSet = "UTF-8";
                Result result = reader.Decode(img);
                return result == null ? string.Empty : result.Text;
            }
    
            private async Task<WriteableBitmap> OpenWritableBitmapFile(StorageFile imgFile)
            {
                using (IRandomAccessStream stream = await imgFile.OpenAsync(FileAccessMode.Read))
                {
                    BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
                    WriteableBitmap img = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight);
                    img.SetSource(stream);
                    return img;
                }
            }    
  • 相关阅读:
    X5webview完美去掉分享功能和缓存功能(2)
    bintray 在android3.2上传遇到的问题
    x5webview 自定义全屏界面
    X5webview去掉分享功能和缓存功能
    buglly热更新集成遇到的那些坑
    腾讯x5webview集成实战
    动态权限<三>华为小米特殊机制
    android 判断应用是否在前台显示
    动态权限<二>之淘宝、京东、网易新闻 权限申请交互设计对比分析
    android 图片二维码识别和保存(二)
  • 原文地址:https://www.cnblogs.com/mengnan/p/6790523.html
Copyright © 2020-2023  润新知