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

来源:互联网 发布:File_priv mysql 编辑:程序博客网 时间:2024/06/01 22:38


在.net中开发中有时候需要将一个url地址转换成二维码,然后再转换成二进制流格式存入数据库中,最后再将二进制流图片用报表的方式呈现出来,以下是具体的步骤:
1.首先下载zxing.dll并引入项目中
2.在cs文件顶部添加如下引用
using System.Drawing;using com.google.zxing.common;using System.Drawing.Imaging;using System.IO;
3.编写如下代码:
///<summary>        /// 生成二维码        /// </summary>        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;            }        } /// <summary>        /// 转换成位图        /// </summary>        /// <param name="matrix"></param>        /// <returns></returns>        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调用,因为报表工具可以直接展示二进制流的图片。