zoukankan      html  css  js  c++  java
  • 在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;
                }
            }    
  • 相关阅读:
    Java实体书写规范
    Mybatis配置中遇到的问题和问题分析
    Ubuntu下eclipse的Extjs提示插件安装
    Ubuntu中root用户和user用户的相互切换
    ubuntu下启动和关闭tomcat的简单方法
    Ubuntu上安装Maven Eclipse以及配置
    IE8兼容<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    心情
    更改Eclipse下Tomcat的部署目录
    Tomcat:IOException while loading persisted sessions: java.io.EOFException 解决
  • 原文地址:https://www.cnblogs.com/mengnan/p/6790523.html
Copyright © 2011-2022 走看看