当前位置: 首页 > news >正文

wordpress织梦博客seo优化技术

wordpress织梦,博客seo优化技术,重庆建设工程信息网官网查询系统官网,成都双语网站开发通常QRCode由服务器生成,以图片格式发送到客户端,由客户端直接展示,也可以由客户端使用javascript或其他内置的SDK直接生成。 0、需求 QRCode生成过程中往往是先生成矩阵,然后使用矩阵生成图片,矩阵就是由01组成的一…

通常QRCode由服务器生成,以图片格式发送到客户端,由客户端直接展示,也可以由客户端使用javascript或其他内置的SDK直接生成。

0、需求

QRCode生成过程中往往是先生成矩阵,然后使用矩阵生成图片,矩阵就是由01组成的一维或二维数组。
例如,由ZXing生成的ByteMatrix就是一个由行列数据组成的二维数组。

//可以生成由01组成的一个矩阵字符串。
private string GetMatrixString(ByteMatrix matrix)
{return string.Join("", matrix.Array.Select(t => string.Join("", t)));
}

有时候,我们需要尽可能的减少网络传输,对QRCode进行缓存处理,或者减少QRCode矩阵生成的逻辑。
这时,我们完全可以将这个字符串发送给客户端,再由客户端生成图片,减少网络浏览传输或者方便客户端缓存QRCode。

下面方法可以对矩阵处理,生成QRCode图片。

function createQRCodeCanvas(matrix, size, padding) {size = size || 3;padding = padding === undefined ? 3 : padding;const width = Math.sqrt(matrix.length);const canvasWith = width * size + padding * 2;const canvas = document.createElement('canvas');canvas.width = canvasWith;canvas.height = canvasWith;const ctx = canvas.getContext('2d');ctx.fillStyle = "rgb(0,0,0)";for (let y = 0; y < width; y++) {for (let x = 0; x < width; x++) {const point = y * width + x;if (matrix[point] === 1) {ctx.fillRect(padding + x * size, padding + y * size, size, size);}}}return canvas.toDataURL();
}
1、矩阵压缩

由于矩阵完全由01组成,我们可以对矩阵进行处理,每8位作为一组,转换成一个字节。
往往矩阵的长度不会被8整除,所以我们在最后一位补1,标识矩阵结束,哪怕矩阵长度能被8整除,我们也补1。
下面代码生成压缩后的矩阵字节数组。

private byte[] GetMatrixBytes(ByteMatrix matrix)
{var qrData = matrix.Array;int idx = 7;int count = 0;byte[] result = new byte[(int)Math.Ceiling((decimal)(qrData.Length * qrData.Length + 1) / 8)];for (int i = 0; i < qrData.Length; i++){byte[] line = qrData[i];for (int j = 0; j < line.Length; j++){result[count++ >> 3] |= (byte)(line[j] << idx--);if (idx == -1) idx = 7;}}result[count >> 3] |= (byte)(1 << idx); //最后一位补1return result;
}

生成矩阵字节数组后,可以转换成base64发送到客户端,这样会大大减少传输的数据量。

2、矩阵还原

将上面的算法逆转即可。
例如,用csharp还原。

/// <summary>
/// 从字节数组还原矩阵字符串
/// </summary>
/// <param name="matrix"></param>
/// <returns></returns>
private byte[] GetMatrixBytes(byte[] matrix)
{byte[] bytes = new byte[matrix.Length * 8];int idx = 0;foreach (byte chr in matrix) for (int i = 7; i >= 0; i--) bytes[idx++] = (byte)((chr >> i) & 1);while (bytes[--idx] == 0) ;return bytes.Take(idx).ToArray();
}

用javascript还原

function getMatrix(raws) {const bytes = [];let idx = 0;for (let j = 0; j < raws.length; j++) {for (let i = 7; i >= 0; i--) bytes[idx++] = (raws[j] >> i) & 1;}while (bytes[--idx] === 0) ;return bytes.slice(0, idx);
}

矩阵还原出来后,就可以用文章最开始的方法将矩阵生成图片了。

3、总结

通过对矩阵的处理,进一步减少标识矩阵所用的字节数,从而减少网络传输的数据,并且更方便的缓存生成的QRCode。
客户端可以只缓存压缩后的矩阵,必要的时候还原并展示即可。

在这里插入图片描述

http://www.15wanjia.com/news/16091.html

相关文章:

  • 南宁做网站推广seo关键词优化推广报价表
  • 做电影网站采集什么意思app运营方案
  • 苏州吴江网站建设广州百度推广代理公司
  • 虚拟主机怎么上传网站最近最火的关键词
  • 广东专业移动网站建设哪家好重庆发布的最新消息今天
  • web 设计网站模板下载产品推广软文范文
  • 公司注册核名在哪个网站2022适合小学生的简短新闻
  • 淘宝做网站很便宜清远新闻最新
  • 好看的旅游网站模版seo营销的概念
  • 日照网站制作公司网络工程师是干什么的
  • 杭州清风室内设计学校青岛seo公司
  • 人力资源公司怎么开seo网络推广员招聘
  • 做1688网站到哪里找图片百度一下就会知道了
  • 微信开发网站建设企业建网站一般要多少钱
  • 备案网站电子照幕布百度博客收录提交入口
  • 做外贸没有网站腾讯企业qq官网
  • 现在流行什么做网站百度推广关键词价格查询
  • 公安网站建设自查报告西安疫情最新数据消息中高风险地区
  • 广州网站建设定制方案徐州seo企业
  • 网站推广免费 优帮云企业宣传ppt
  • 2017网站建设报价方案跨境电商平台推广
  • 网站建设属于什么支出互联网运营
  • 做b2b网站销售怎样让客户找上门精准客户资源购买
  • 永年网站建设营销网站建设多少钱
  • 哪里可以做免费网站山东最新资讯
  • 建设网站建设多少钱网站权重查询
  • aqqqcom查询桂林网站优化
  • 网站建设开票内容些什么明星百度指数在线查询
  • 一个中介平台网站的建设费有没有购买链接
  • 网上黑赌网站如何做代理seo博客是什么意思