二维码及二维码接合短URL的应用
- 二维码
1.什么是二维码?
二维条形码,最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化等特点
2.分类
1).堆叠式
堆叠式/行排式二维条码(又称堆积式二维条码或层排式二维条码),其编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。它在编码设计、校验原理、识读方式等方面继承了一维条码的一些特点,识读设备与条码印刷与一维条码技术兼容。但由于行数的增加,需要对行进行判定,其译码算法与软件也不完全相同于一维条码。有代表性的行排式二维条码有:Code
16K、Code 49、PDF417等。
2).矩阵式
短阵式二维条码(又称棋盘式二维条码)它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。具有代表性的矩阵式二维条码有:Code
One、Maxi Code、QR Code、 Data Matrix等
3.应用
二维条码具有储存量大、保密性高、追踪性高、抗损性强、备援性大、成本便宜等特性,这些特性特别适用于表单、安全保密、追踪、证照、存货盘点、资料备援等方面。
URL)就是为了让一个很长的网站链接缩短为一个短的链接,因为微博内有字数限制,所以短地址就是为了这个而产生的。现在大部分微博、手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场。估计很多朋友现在也正在使用
2.算法一
3.算法二
public static string getShortUrl(string Data, QrType qrType, string QrHost)
{
string UrlData = string.Empty;
try
{
string[] ActStr = { "getUrl", "getMeVcard", "getText" };
QrHost = (QrHost.LastIndexOf(@"/")+ == QrHost.Length) ? QrHost : (string.Format("{0}{1}", QrHost, "/"));
UrlData = getEncryptData(Data);
UrlData = UrlHelper.GetShortUrl(string.Format("{0}Qr/{1}?Content={2}", QrHost, ActStr[(int)qrType], UrlData));
UrlData = string.Format("{0}{1}", QrHost, UrlData);
}
catch (Exception e) { UrlData = string.IsNullOrEmpty(QrHost)?"请配置QrHost":e.Message; }
return UrlData;
}
2.生成二维码图片的MemoryStream
/// <summary>
/// MeVcard名片二维码
/// </summary>
/// <param name="Info">MeVcard</param>
/// <returns></returns>
public MemoryStream CreateMeVcard(MeVcardInfo Info)
{
if (Info == null ) return null;
Content = "MECARD:";
SpVcardLink("N", Info.Name);
SpVcardLink("TEL", Info.Tel);
SpVcardLink("TEL", Info.Tel2);
SpVcardLink("EMAIL", Info.Email);
SpVcardLink("ADR", Info.Address);
SpVcardLink("URL", Info.Url);
SpVcardLink("NOTE", Info.Note);
SpVcardLink("BDAY", Info.Birthday);
SpVcardLink("PHONE", Info.Phone);
SpVcardLink("FAX", Info.FAX);
Content = (Content == "MECARD:" ? "" : Content);
return CreateText(Content);
}
3.解析短URL,还原实际地址
public void Index(string url)
{try
{
if (url.Length == )
{
string Locahost = Request.Url.AbsoluteUri.Replace(url, "");
using (var client = YIZNoSql.RedisManager.GetPConClient())
{
url = client.Get<string>(url);
} string Content = string.Empty;
Action<string> Act = getText;
string Acttext = string.Format("{0}qr/{1}?content=", Locahost, "gettext");
string Acturl = string.Format("{0}qr/{1}?content=", Locahost, "geturl");
string Actmevcard = string.Format("{0}qr/{1}?content=", Locahost, "getmevcard");
if (url.IndexOf(Acturl, StringComparison.CurrentCultureIgnoreCase) == )
{
Content = url.Substring(Acturl.Length, url.Length - Acturl.Length);
Act = getUrl;
}
else if (url.IndexOf(Actmevcard, StringComparison.CurrentCultureIgnoreCase) == )
{
Content = url.Substring(Actmevcard.Length, url.Length - Actmevcard.Length);
Act = getMeVcard;
}
else
{
Content = url.Substring(Acttext.Length, url.Length - Acttext.Length);
Act = getText;
}
Act(Content);
}
else
{
Response.Write("Error!!");
}
}
catch { Response.Write("Parse Error!!"); }
}
4.输出图片
/// <summary>
/// 二维码名片
/// </summary>
private void getMeVcard(string Content)
{
QrCodeHelper qc = new QrCodeHelper();
MeVcardInfo Info = JsonConvert.DeserializeObject<MeVcardInfo>(Helper.getDecryptData(Content));
MemoryStream ms = qc.CreateMeVcard(Info);
WriteImg(ms);
}
private void WriteImg(MemoryStream Ms)
{
try
{
Response.Clear();
Response.ContentType = "image/png";
Response.OutputStream.Write(Ms.GetBuffer(), , (int)Ms.Length);
}
catch
{
}
}
二维码及二维码接合短URL的应用的更多相关文章
- 【转】Android手机客户端关于二维码扫描的源码--不错
原文网址:https://github.com/SkillCollege/QrCodeScan QrCodeScan 这是Android手机客户端关于二维码扫描的源码,使用了高效的ZBar解码库,并修 ...
- ZXing拍摄代码扫描之后以区分一维码、二维码、其他代码
我怎么有二维码没有联系,最近遇到一个问题,,如何推断条码扫描到一维代码或者二维代码,辛苦了一个下午下班后自己,加上网上跟踪信息. 总结出两种方式能够解决该问题(推荐採用另外一种方式): 1.改动源代码 ...
- Halcon一维码和二维码的解码步骤和技巧——第11讲
针对Halcon中一维码和二维码的解码,我分别写了两篇文章,参见: <Halcon的一维条码解码步骤和解码技巧>:https://www.cnblogs.com/xh6300/p/1048 ...
- 关于.NET HttpClient方式获取微信小程序码(二维码)
随着微信小程序的火热应用,市面上有关小程序开发的需求也多了起来.近来分析了一项生成有关生成微信小程序码的需求——要求扫码跳转到小程序指定页面(带参数):看了下小程序官方文档文档,结合网上的例子,未看到 ...
- Delphi Mercadopago支付【支持支持获取账户信息和余额、创建商店,商店查询、创建二维码、二维码查询、创建订单、订单查询、订单退款等功能】
作者QQ:(648437169) 点击下载➨Delphi Mercadopago支付 [Delphi Mercadopago支付]支持 支持支持获取账户信息和余额.创建商店,商店查询.创建二维码.二维 ...
- Flutter扫码识别二维码内容
前面一篇写了生成二维码图片,这篇来写使用相机扫描识别二维码 识别二维码需要用到插件 barcode_scan 首先在 pubspec.yaml 文件中添加以下依赖,添加依赖后在 pubspec.yam ...
- asp.net生成店铺推广二维码,二维码中间加logo(源码)
二维条码比一维条码记载数据量更多,二维码条码是一种高密度.高信息含量的便携式数据文件,是实现证件及卡片等大容量.高可靠性信息自动存储.携带并可用机器自动识读的理想手段.而且可以记载更复杂的数据,比如图 ...
- online QRcode generator , QRcode=== (Quick Response Code) , 二维条码,二维码,彩色二维码,图片二维码,
online QRcode generator , QRcode=== (Quick Response Code) , 二维条码,二维码,彩色二维码,图片二维码, 1 http://cli.i ...
- paip.多维理念 输入法的外码输入理论跟文字输出类型精髓
paip.多维理念 输入法的外码输入理论跟文字输出类型精髓 通常,我们的输入法使用的外码是拼音,但是,这个的用户体验很差.. 应该使用多个外码类型... ##按照词汇来源,有如下几个 固有词ati 来 ...
随机推荐
- Android Exception18(Stuido debug .....)
这个问题比较诡异,在用android-studio debug的时候,第一次能正常使用,但是后面就不知道是什么鬼,每次debug都冒出来这个. 之后,重新新建一个项目就好了
- iOSeasy造成循引用的场景
场景一 :NStimer timer就是一个能在从如今開始的未来的某一个时刻又或者周期性的运行我们指定的方法的对象 NSTimer运行的必要条件:相应线程的RunLoop要开启,mode要相应 以下看 ...
- (一)Shiro笔记——简介、 架构分析
1. Shiro是什么 Apache Shiro是一个强大灵活的开源安全框架,可以完全处理身份验证,授权,企业会话管理和加密. Apache Shiro的首要目标是易于使用和理解. 安全有时可能非常复 ...
- AngularJs学习笔记(1)——ng-app
众所周知: ng-app 指令用于告诉 AngularJS 应用当前这个元素是根元素.所有 AngularJS 应用都必须要要一个根元素. 只有被具有ng-app属性的DOM元素包含的元素才会受ang ...
- @using (Html.BeginForm()) @using (Ajax.BeginForm(new AjaxOptions() { })) 区别
@using (Html.BeginForm()) 返回页面 也是页面 都是返回页面 只是 多了一个 data-ajax="true"
- linux命令ulimit 系统限制你打开一些资源数
#ulimit -a 查看系统的一些限制,比如在做并发测试时ab命令的请求书不能超过 1024个. 要更改 #ulimit -n 10240
- 在CTreeCtrl控件点击事件中获取点击的项
网上搜了一下,有两种方法: 1.使用GetSelectedItem() HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); CString strText ...
- LeetCode532. K-diff Pairs in an Array
Description Given an array of integers and an integer k, you need to find the number of unique k-dif ...
- 在海思hisiv100nptl平台上交叉编译并安装SRS
./configure --with-arm-ubuntu12 && make 须要安装: apt-get installgcc-arm-linux-gnueabi ,但hi3 ...
- android开发的权限获取 (转载的)
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permiss ...