• 使用c#读取/解析二维码


    使用zxing.net组件,读取BitmapSource中的二维码。简单使用方法如下:

            private void DecodeQrCode()
            {
                if (QrCodeSource.CanFreeze)
                {
                    QrCodeSource.Freeze();
                }
                using (var bitmap = BitmapSourceToBitmap(QrCodeSource))
                {
                    var source = new BitmapLuminanceSource(bitmap);
                    var bBitmap = new BinaryBitmap(new HybridBinarizer(source));
                    var result = new MultiFormatReader().decode(bBitmap);
                    ResultValue = result?.Text;
                }
            }
    读取

    解析要简单很多:

            private void EncodeToQrCode()
            {
                var qrCodeWriter = new QRCodeWriter();
                var result = qrCodeWriter.encode(Value, BarcodeFormat.QR_CODE, 200, 200);
                var barcodeWriter = new BarcodeWriter();
                using (var bitmap = barcodeWriter.Write(result))
                {
                    QrCodeSource = null;
                    QrCodeSource = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty,
                        BitmapSizeOptions.FromEmptyOptions());
                }
            }
    解析

    ImageSource到Bitmap的转换:

            public static Bitmap BitmapSourceToBitmap(BitmapSource bitmapImage)
            {
                using (var outStream = new MemoryStream())
                {
                    BitmapEncoder enc = new BmpBitmapEncoder();
                    enc.Frames.Add(BitmapFrame.Create(bitmapImage));
                    enc.Save(outStream);
                    return new Bitmap(outStream);
                }
            }
    BitmapSourceToBitmap

     存在内存泄漏问题。

  • 相关阅读:
    android handle详解
    android面试详解
    linux网络编程-一个简单的线程池(41)
    linux网络编程-posix条件变量(40)
    如何写一个简单的分页
    jQuery 3 有哪些新东西
    浅析正则表达式模式匹配的 String 方法
    jQuery源码浅析2–奇技淫巧
    前端文本截断
    你会用setTimeout吗
  • 原文地址:https://www.cnblogs.com/zhuyc110/p/5818537.html
Copyright © 2020-2023  润新知