二维码图片以字符串的形式保存DB,已文件流显示页面上
链接:https://pan.baidu.com/s/1mCTwHiAm_awtsPcibAotZw
提取码:ufp6
public class QRcode
{
//需要引用ZXing.DLL 可以百度一下 一个很好用的二维码生成程序集《DLL文件啦》
//使用案例:Bitmap img3 = GenByZXingNet("");
//使用案例:img3.Save(Server.MapPath(@"\testImg\erweima.png"));
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="msg">二维码信息</param>
/// <param name="codeSizeInPixels">正方形 边长</param>
/// <returns>图片</returns>
public static Bitmap GenByZXingNet(string msg, int codeSizeInPixels = )
{
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 = ;//设置边框1 ZXing.Common.BitMatrix bm = writer.Encode(msg);
Bitmap img = writer.Write(msg);
return img;
} #endregion #region C#生成带有Log的二维码
/// <summary>
/// 生成带Logo的二维码
/// </summary>
/// <param name="text">文本内容</param>
static void Generate(string text, string LogoPth, string serverPth, ImageFormat imgFrt)
{
//Logo 图片
Bitmap logo = new Bitmap(LogoPth);
//构造二维码写码器
MultiFormatWriter writer = new MultiFormatWriter();
Dictionary<EncodeHintType, object> hint = new Dictionary<EncodeHintType, object>();
hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8");
hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); //生成二维码
BitMatrix bm = writer.encode(text, BarcodeFormat.QR_CODE, , , hint);
BarcodeWriter barcodeWriter = new BarcodeWriter();
Bitmap map = barcodeWriter.Write(bm); //获取二维码实际尺寸(去掉二维码两边空白后的实际尺寸)
int[] rectangle = bm.getEnclosingRectangle(); //计算插入图片的大小和位置
int middleW = Math.Min((int)(rectangle[] / 3.5), logo.Width);
int middleH = Math.Min((int)(rectangle[] / 3.5), logo.Height);
int middleL = (map.Width - middleW) / ;
int middleT = (map.Height - middleH) / ; //将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, , );
}
//将二维码插入图片
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生成条形码
/// <summary>
/// 文本内容
/// </summary>
/// <param name="text">只支持数字 只支持偶数个 最大长度80</param>
/// <param name="ServerPTh">存储路径 @"H:\桌面\截图\generate2.png"</param>
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 = ,
Height = ,
Margin =
};
writer.Options = options;
Bitmap map = writer.Write(text);
string filename = ServerPth;//请注意 保存格式和文件扩展名一致性
map.Save(filename, imgFrt);
} /// <summary>
/// 文本内容 生成条形码
/// </summary>
/// <param name="text">只支持数字 最大长度80</param>
/// <param name="ServerPTh">文件夹名称</param>
/// <param name="fileName">文件名</param>
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 = ,
Height = ,
Margin =
};
writer.Options = options;
Bitmap map = writer.Write(text);
string filename = ServerPth;//请注意 保存格式和文件扩展名一致性
map.Save(filename, imgFrt);
return ServerPth;
}
#endregion #region 二维码 条形码读取
/// <summary>
/// 二维码 条形码读取
/// </summary>
/// <param name="filename">文件路径</param>
/// <returns></returns>
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"));
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="msg">二维码信息</param>
/// <param name="codeSizeInPixels">正方形 边长</param>
/// <returns>图片</returns>
public static Bitmap GenByZXingNet_Color(string msg, int codeSizeInPixels = )
{
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 = ;//设置边框1 ZXing.Common.BitMatrix bm = writer.Encode(msg);
Bitmap img = writer.Write(msg);
return img;
} }
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);//转换成文件流
页面上展示
<img src="data:image/jpeg;base64,{{Data.ImgString}}">
我上面是后端的写法,现在用下面的写法比较简单
使用jquery.qrcode生成二维码
二维码图片以字符串的形式保存DB,已文件流显示页面上的更多相关文章
- vue2.0生成二维码图片并且下载图片到本地兼容写法
vue生成二维码图片,这里使用的是qrcode.js 这个插件(亲测写法,兼容没有问题) 第一步,下载插件 需要注意,这里下载的是qrcodejs2 cnpm install --save qrcod ...
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
常量,字段,构造方法 常量 1.什么是常量 常量是值从不变化的符号,在编译之前值就必须确定.编译后,常量值会保存到程序集元数据中.所以,常量必须是编译器识别的基元类型的常量,如:Boolean ...
- C# 利用QRCode生成二维码图片
网上生成二维码的组件是真多,可是真正好用的,并且生成速度很快的没几个,QRCode就是我在众多中找到的,它的生成速度快.但是网上关于它的使用说明,真的太少了,大都是千篇一律的复制粘贴.这是本要用它做了 ...
- iOS摇一摇功能、震动功能、简单的摇动动画、生成二维码图片与发送短信等几个功能
有一个开锁的功能,具体的需求就类似于微信的"摇一摇"功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最 ...
- iOS-生成二维码图片【附中间带有小图标二维码】(QRCode)
生成二维码图片也是项目中常用到的,二维码的扫描Git上有很多好用的,这里主要说下二维码的生成 1.普通二维码 方法 /** 生成二维码 QRStering:字符串 imageFloat:二维码图片大小 ...
- 分享一个二维码图片识别控制台程序Demo
怎么用NuGet和配置log4net就不介绍了,直接上代码(QRDecodeDemo.zip). (Visual Studio 2015 下的项目,用的.NET Framework 4.5.2) 吐槽 ...
- c# 生成二维码图片
转载自:https://blog.csdn.net/hyunbar/article/details/78271778 1.在C#中直接引用ThoughtWorks.QRCode.dll 类 2.封装方 ...
- iOS几个功能:1.摇一摇;2.震动;3.简单的摇动动画;4.生成二维码图片;5.发送短信;6.播放网络音频等
有一个开锁的功能,具体的需求就类似于微信的“摇一摇”功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最简单的功能了. 在v ...
- jquery生成二维码图片
1.插件介绍 jquery.qrcode.min.js插件是jq系列的基于jq,在引入该插件之前要先引入jq.能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生 ...
随机推荐
- mysql触发器Before和After的区别
Before与After区别:before:(insert.update)可以对new进行修改. after不能对new进行修改. ...
- mysql查看每个数据库所占磁盘大小
#查看每个数据库所占磁盘大小 SELECT TABLE_SCHEMA AS "库名", , ) AS "表所占空间(MB)", , ) AS "索引所 ...
- python 进程间通信(上)
一 使用queue来实现进程间的内存共享 #_*_coding:utf-8_*_ from multiprocessing import Process,Queue import os,time d ...
- Python+Selenium+Pycharm
我的环境是: 系统 Python Selenium win10 教育版64位 3.6.4 3.11.0 在Pycharm中安装好Selenium后,输入代码来测试: from selenium imp ...
- PHP 根据子ID递归获取父级ID,实现逐级分类导航效果
代码: //当前路径 $cate=M('wangpan_class')->select(); function get_top_parentid($cate,$id){ $arr=array() ...
- html5 Canvas绘制时钟以及绘制运动的圆
1.绘制时钟 <!-- js代码 --> <script type="text/javascript"> window.onload=function(){ ...
- react_app 项目开发_遇到的坑
1. favicon.ico <link rel="shortcut icon" type="image/x-icon" href="./fav ...
- css样式兼容各个浏览器时的部分总结
[本文基本是在网络转发过来的,网站就忘记了,这文本都是保存在自己电脑本地的,还有些自己添加了些内容,这内容还会有不断的完善和更行的] 什么是浏览器兼容:当我们使用不同的浏览器(Firefox IE7 ...
- 六、web应用与Tomcat
软件系统体系结构 1 常见软件系统体系结构B/S.C/S 1.1 C/S l C/S结构即客户端/服务器(Client/Server),例如QQ: l 需要编写服务器端程序,以及客户端程序,例如我们安 ...
- poj 3422 最小费用流
如果不是从费用流区做这个题几乎不会想到用费用流 点有权值很容易想到拆点 问题是求最大sum ... 把权值取负 这样最小费用流的相反数就是最大sum 源点S汇点T k为移动次数 矩阵中的点拆成入点出 ...