生成二維碼圖片代碼+加圖片水印+導出


  做了個小項目,根據一些基本信息,生成二維碼圖片,並為二維碼圖片加上一幅圖片水印,然后導出。

  

  1、生成二維碼

  ZXing是一個開放源碼的,用Java實現的多種格式的1D/2D條碼圖像處理庫,它包含了聯系到其他語言的端口。Zxing可以實現使用手機的內置的攝像頭完成條形碼的掃描及解碼。該項目可實現的條形碼編碼和解碼。目標是能夠對QR編碼、Data Matrix、UPC的1D條形碼進行解碼。 其提供了多種平台下的客戶端包括:J2ME、J2SE和Android。---用來解碼QRcode。本文引用zxing.dll,生成二維碼。

  引用命名空間:  

using com.google.zxing.qrcode;
using com.google.zxing;
using com.google.zxing.common;
using ByteMatrix = com.google.zxing.common.ByteMatrix;
using EAN13Writer = com.google.zxing.oned.EAN13Writer;
using EAN8Writer = com.google.zxing.oned.EAN8Writer;
using MultiFormatWriter = com.google.zxing.MultiFormatWriter;
using System.IO;
using System.Collections;

  

  生成二維碼: 

private void btnGenerate_Click(object sender, EventArgs e)
        {
            ByteMatrix byteMatrix;
            string content = this.textBox1.Text;

            if (!string.IsNullOrEmpty(content))
            {
                byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 300, 300);
                bitmap = ToBitmap(byteMatrix);
            }

            this.pictureBox1.Image = bitmap;
            mapCreate = bitmap;
        }

        public static Bitmap ToBitmap(ByteMatrix matrix)
        {
            int width = matrix.Width;
            int height = matrix.Height;
            Bitmap bmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < height; y++)
                {
                    bmap.SetPixel(x, y, matrix.get_Renamed(x, y) != -1 ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF"));
                }
            }
            return bmap;
        }

 

  加圖片水印: 

//圖片水印處理方法
        private Bitmap ImageWatermark(Bitmap map, string waterpath)
        {
            Image waterimg = Image.FromFile(waterpath);

            //添加水印
            Graphics g = Graphics.FromImage(map);

            //獲取水印位置設置
            ArrayList loca = new ArrayList();
            int x = 0;
            int y = 0;
            x = map.Width / 2 - waterimg.Width / 2;
            y = map.Height / 2 - waterimg.Height / 2;
            loca.Add(x);
            loca.Add(y);

            //g.DrawImage(waterimg, new Rectangle(int.Parse(loca[0].ToString()), int.Parse(loca[1].ToString()), waterimg.Width, waterimg.Height));
            g.DrawImage(waterimg, new Rectangle(int.Parse(loca[0].ToString()), int.Parse(loca[1].ToString()), 75, 75));

            return map;
        }

 

  導出:

  先添加 saveFileDialog控件 

private void btnOut_Click(object sender, EventArgs e)
        {
            try
            {
                saveFileDialog1.ShowDialog();
                string fileName = saveFileDialog1.FileName;

                if (fileName != null)
                {
                    mapCreate.Save(fileName);//mapCreate是bitmap格式的圖片
                }
            }
            catch (Exception ex)
            {                
                throw;
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM