在.net中将URL转二维码再转二进制流图片


在.net中开发中有时候需要将一个url地址转换成二维码,然后再转换成二进制流格式存入数据库中,最后再将二进制流图片用报表的方式呈现出来,以下是具体的步骤:
1.首先下载zxing.dll并引入项目中
2.在cs文件顶部添加如下引用
using System.Drawing;
using com.google.zxing.common;
using System.Drawing.Imaging;
using System.IO;
3.编写如下代码:
///
        /// 生成二维码
        /// 
        private byte[] CreateEWM(string content)
        {
            ByteMatrix byteMatrix = new com.google.zxing.MultiFormatWriter().encode(content, com.google.zxing.BarcodeFormat.QR_CODE, 250, 250);
            EncoderParameters eps = new EncoderParameters();
            eps.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 1000L);
            Bitmap bmap = toBitmap(byteMatrix);
            using (MemoryStream stream = new MemoryStream())
            {
                bmap.Save(stream, ImageFormat.Jpeg);
                byte[] data = new byte[stream.Length];
                stream.Seek(0, SeekOrigin.Begin);
                stream.Read(data, 0, Convert.ToInt32(stream.Length));
                return data;
            }
        }
 /// 
        /// 转换成位图
        /// 
        /// 
        /// 
        private 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;
        }
4.
byte[] bytaryEWM = CreateEWM(codeUrl);
最后只要调用此方法,传入一个你需要转换的url即可,此时已经完成了url到二进制流二维码图片的转换,此方法不用将二维码图片保存至项目的某个文件夹中,然后再通过图片src调用,因为报表工具可以直接展示二进制流的图片。


你可能感兴趣的:(.NET)