Asa_ZXing.cs 2.0 KB
using System;
using System.Collections.Generic;
using System.Drawing;
using ZXing;
using ZXing.Common;
using ZXing.Datamatrix;

namespace Asa
{
    public class ZXingCode
    {
        public bool DecodeQRCode(Bitmap bmp, out string text)
        {
            DecodingOptions option = new DecodingOptions();
            //option.PossibleFormats = new List<BarcodeFormat>() { BarcodeFormat.QR_CODE, BarcodeFormat.All_1D };
            option.PossibleFormats = new List<BarcodeFormat>() { BarcodeFormat.QR_CODE };
            BarcodeReader br = new BarcodeReader();
            br.Options = option;
            Result rs = br.Decode(bmp);
            if (rs == null)
            {
                text = "";
                return false;
            }
            else
            {
                text = rs.Text;
                return true;
            }

        }

        /// <summary>
        /// DataMatrix矩阵二维码
        /// </summary>
        /// <param name="text"></param>
        /// <param name="size"></param>
        /// <returns></returns>
        public Bitmap DataMatrix(string text, int size)
        {
            if (size < 10) size = 10;

            //DatamatrixEncodingOptions dmxoption = new DatamatrixEncodingOptions();
            //dmxoption.Height = size;
            //dmxoption.Width = size;
            //dmxoption.Margin = 10;
            //dmxoption.PureBarcode = false;
            //dmxoption.SymbolShape = ZXing.Datamatrix.Encoder.SymbolShapeHint.FORCE_NONE;
            //BarcodeWriter barcodewriter = new BarcodeWriter();
            //barcodewriter.Options = dmxoption;
            //barcodewriter.Format = BarcodeFormat.DATA_MATRIX;
            //return barcodewriter.Write(text);


            DataMatrix.net.DmtxImageEncoderOptions opt = new DataMatrix.net.DmtxImageEncoderOptions();
            opt.ModuleSize = size;
            opt.MarginSize = 5;
            DataMatrix.net.DmtxImageEncoder encoder = new DataMatrix.net.DmtxImageEncoder();
            Bitmap bm = encoder.EncodeImage(text, opt);
            return bm;


        }

    }
}