条码生成器

/// <summary>
    /// 条码生成器
    /// </summary>
    public class CodeCreater
    {
        public CodeCreater()
        {
            optionsQR = new QrCodeEncodingOptions()
            {
                DisableECI = true,
                CharacterSet = "UTF-8",
                Width = 120,
                Height = 120
            };
            optionsBR = new EncodingOptions()
            {
                Width = 300,
                Height = 80
            };

            this.Init();
        }

        public CodeCreater(int widthQR, int heightQR, int widthBR, int heightBR, string charEncodeing)
        {
            optionsQR = new QrCodeEncodingOptions()
            {
                DisableECI = true,
                CharacterSet = charEncodeing,
                Width = widthQR,
                Height = heightQR
            };
            optionsBR = new EncodingOptions()
            {
                Width = widthBR,
                Height = heightBR
            };

            this.Init();

        }

        private void Init()
        {
            writerQR.Format = BarcodeFormat.QR_CODE;
            writerQR.Options = optionsQR;

            writerBR.Format = BarcodeFormat.CODE_128;
            writerBR.Options = optionsBR;
        }


        private EncodingOptions optionsQR;
        private EncodingOptions optionsBR;
        BarcodeWriter writerQR = new BarcodeWriter();
        BarcodeWriter writerBR = new BarcodeWriter();
        BarcodeReader reader = new BarcodeReader();

        /// <summary>
        /// 生成码类型,二维码,条码
        /// </summary>
        public enum CodeType
        {
            /// <summary>
            /// 二维码
            /// </summary>
            QR_CODE,
            /// <summary>
            /// 条码 默认CODE_39
            /// </summary>
            BarCode
        }

        /// <summary>
        /// 生成二维码
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public Bitmap EncodingQR(string info)
        {

            BitMatrix m = new MultiFormatWriter().encode(info, BarcodeFormat.QR_CODE, writerQR.Options.Width, writerQR.Options.Height);

            int[] rect = m.getEnclosingRectangle();
            Bitmap bpS = writerQR.Write(info);
            Bitmap bpD = new Bitmap(writerQR.Options.Width - rect[0] * 2, writerQR.Options.Height - rect[0] * 2, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            for (int x = 0; x < bpD.Width; x++)
            {
                for (int y = 0; y < bpD.Height; y++)
                {

                    bpD.SetPixel(x, y, bpS.GetPixel(x + rect[0], y + rect[0]));
                }
            }

            return ZoomPic(bpD, writerQR.Options.Width);

        }

        /// <summary>   
        /// 按比例缩小图片,自动计算高度   
        /// </summary>   
        /// <param name="strOldPic">源图文件)</param>   
        /// <param name="intWidth">缩小至宽度</param>   
        public Bitmap ZoomPic(Bitmap objPic, int intWidth)
        {

            System.Drawing.Bitmap objNewPic;
            int intHeight = (int)(((float)intWidth / objPic.Width) * objPic.Height);
            objNewPic = new System.Drawing.Bitmap(objPic, intWidth, intHeight);
            return objNewPic;
        }


        /// <summary>
        /// 生成条码 CODE_39
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public Bitmap EncodingBR(string info)
        {
            return writerBR.Write(info);
        }

        /// <summary>
        /// 解码
        /// </summary>
        /// <param name="mp">图片</param>
        /// <returns></returns>
        public string DeEnconding(Bitmap mp)
        {
            Result rt = reader.Decode(mp);
            if (rt.Text != "")
            {
                return rt.Text;
            }
            else
            {
                return string.Empty;
            }
        }

        public byte[] ConvertImageToByte(Image im)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            im.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
            return ms.ToArray();
        }



    }