博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二维码图片以字符串的形式保存DB,已文件流显示页面上
阅读量:4984 次
发布时间:2019-06-12

本文共 7414 字,大约阅读时间需要 24 分钟。

以下是生成二维码的方法,我只用其中一个方法 这个需要引用ZXing.DLL 

链接:https://pan.baidu.com/s/1mCTwHiAm_awtsPcibAotZw

提取码:ufp6 

public class QRcode    {        //需要引用ZXing.DLL  可以百度一下  一个很好用的二维码生成程序集《DLL文件啦》        //使用案例:Bitmap img3 = GenByZXingNet("");        //使用案例:img3.Save(Server.MapPath(@"\testImg\erweima.png"));        ///         /// 生成二维码        ///         /// 二维码信息        /// 正方形 边长        /// 
图片
public static Bitmap GenByZXingNet(string msg, int codeSizeInPixels = 250) { BarcodeWriter writer = new BarcodeWriter(); writer.Format = BarcodeFormat.QR_CODE; writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");//编码问题 writer.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H); writer.Options.Height = writer.Options.Width = codeSizeInPixels; writer.Options.Margin = 0;//设置边框1 ZXing.Common.BitMatrix bm = writer.Encode(msg); Bitmap img = writer.Write(msg); return img; } #endregion #region C#生成带有Log的二维码 /// /// 生成带Logo的二维码 /// /// 文本内容 static void Generate(string text, string LogoPth, string serverPth, ImageFormat imgFrt) { //Logo 图片 Bitmap logo = new Bitmap(LogoPth); //构造二维码写码器 MultiFormatWriter writer = new MultiFormatWriter(); Dictionary
hint = new Dictionary
(); hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8"); hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); //生成二维码 BitMatrix bm = writer.encode(text, BarcodeFormat.QR_CODE, 300, 300, hint); BarcodeWriter barcodeWriter = new BarcodeWriter(); Bitmap map = barcodeWriter.Write(bm); //获取二维码实际尺寸(去掉二维码两边空白后的实际尺寸) int[] rectangle = bm.getEnclosingRectangle(); //计算插入图片的大小和位置 int middleW = Math.Min((int)(rectangle[2] / 3.5), logo.Width); int middleH = Math.Min((int)(rectangle[3] / 3.5), logo.Height); int middleL = (map.Width - middleW) / 2; int middleT = (map.Height - middleH) / 2; //将img转换成bmp格式,否则后面无法创建Graphics对象 Bitmap bmpimg = new Bitmap(map.Width, map.Height, PixelFormat.Format32bppArgb); using (Graphics g = Graphics.FromImage(bmpimg)) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; g.DrawImage(map, 0, 0); } //将二维码插入图片 Graphics myGraphic = Graphics.FromImage(bmpimg); //白底 myGraphic.FillRectangle(Brushes.White, middleL, middleT, middleW, middleH); myGraphic.DrawImage(logo, middleL, middleT, middleW, middleH); //保存成图片 bmpimg.Save(serverPth, imgFrt); } #endregion #region ZXing生成条形码 ///
/// 文本内容 /// ///
只支持数字 只支持偶数个 最大长度80 ///
存储路径 @"H:\桌面\截图\generate2.png" public static void Generate(string text, string ServerPth, ImageFormat imgFrt) { BarcodeWriter writer = new BarcodeWriter(); //使用ITF 格式,不能被现在常用的支付宝、微信扫出来 //如果想生成可识别的可以使用 CODE_128 格式 //writer.Format = BarcodeFormat.ITF; writer.Format = BarcodeFormat.CODE_128; EncodingOptions options = new EncodingOptions() { Width = 150, Height = 50, Margin = 2 }; writer.Options = options; Bitmap map = writer.Write(text); string filename = ServerPth;//请注意 保存格式和文件扩展名一致性 map.Save(filename, imgFrt); } ///
/// 文本内容 生成条形码 /// ///
只支持数字 最大长度80 ///
文件夹名称 ///
文件名 public static string GenerateTxm(string text, string category, string fileName, ImageFormat imgFrt) { var uploadPath = System.Configuration.ConfigurationSettings.AppSettings["UploadPath"]; //文件保存目录路径 string dirTempPath = uploadPath + "//" + category; if (!Directory.Exists(dirTempPath)) { Directory.CreateDirectory(dirTempPath); } string ServerPth = dirTempPath + "//" + fileName;//文件绝对路径 BarcodeWriter writer = new BarcodeWriter(); //使用ITF 格式,不能被现在常用的支付宝、微信扫出来 //如果想生成可识别的可以使用 CODE_128 格式 //writer.Format = BarcodeFormat.ITF; writer.Format = BarcodeFormat.CODE_128; EncodingOptions options = new EncodingOptions() { Width = 150, Height = 50, Margin = 2 }; writer.Options = options; Bitmap map = writer.Write(text); string filename = ServerPth;//请注意 保存格式和文件扩展名一致性 map.Save(filename, imgFrt); return ServerPth; } #endregion #region 二维码 条形码读取 ///
/// 二维码 条形码读取 /// ///
文件路径 ///
public static string Read(string filename) { BarcodeReader reader = new BarcodeReader(); reader.Options.CharacterSet = "UTF-8"; Bitmap map = new Bitmap(filename); Result result = reader.Decode(map); return result == null ? "" : result.Text; } #endregion #region C#生成特定颜色二维码-基础版本 //需要引用ZXing.DLL 可以百度一下 一个很好用的二维码生成程序集《DLL文件啦》 //使用案例:Bitmap img3 = GenByZXingNet(""); //使用案例:img3.Save(Server.MapPath(@"\testImg\erweima.png")); ///
/// 生成二维码 /// ///
二维码信息 ///
正方形 边长 ///
图片
public static Bitmap GenByZXingNet_Color(string msg, int codeSizeInPixels = 250) { BarcodeWriter writer = new BarcodeWriter(); writer.Renderer = new ZXing.Rendering.BitmapRenderer { Background = Color.Red, Foreground = Color.Blue }; writer.Format = BarcodeFormat.QR_CODE; writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");//编码问题 writer.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H); writer.Options.Height = writer.Options.Width = codeSizeInPixels; writer.Options.Margin = 0;//设置边框1 ZXing.Common.BitMatrix bm = writer.Encode(msg); Bitmap img = writer.Write(msg); return img; } }
View Code

 

Bitmap b = QRcode.GenByZXingNet("二维码内容字符串");            MemoryStream ms = new MemoryStream();            b.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);            byte[] bytes = ms.GetBuffer();            string textString = System.Convert.ToBase64String(bytes);//存DBd的字符串            ms.Close();

  

string ImgString;//存DB的字符串byte[] arrBuffer = System.Convert.FromBase64String(ImgString);//转换成文件流

  页面上展示

  我上面是后端的写法,现在用下面的写法比较简单

使用jquery.qrcode生成二维码

 https://www.cnblogs.com/zhengweijie/p/6911834.html 

转载于:https://www.cnblogs.com/youngharvard/p/10484795.html

你可能感兴趣的文章
div滚动条
查看>>
iOS越狱程序开发
查看>>
DB2存储过程标准
查看>>
利用checkbox做switch
查看>>
欢迎可爱的同学们。
查看>>
使用Spring Security控制会话
查看>>
2018-2019-1 20189206 《从问题到程序》速读
查看>>
sublime常用快捷键
查看>>
使UltraEdit支持Verilog hdl语言
查看>>
一个监听事件监听多个按钮
查看>>
调用其他类的方法
查看>>
SQlite数据库
查看>>
token防止表单重复提交
查看>>
前端开发要注意的浏览器兼容性问题整理
查看>>
Python服务器开发 -- 网络基础
查看>>
开源项目Html Agility Pack实现快速解析Html
查看>>
一些常用的js,jquerry 样例
查看>>
Oracle PL/SQL 多重选择句
查看>>
dorado中的creationType选择类型
查看>>
C++11 数值类型和字符串的相互转换
查看>>