F#之旅8 - 图片处理应用之动画二维码
首先,先介绍下什么是动画二维码。前些天在网上闲逛,突然看到一个开源项目,发现一种二维码的新玩法。https://github.com/sylnsfar/qrcode/blob/master/README-cn.md。二维码各种美化早就有看过,原理也大概知道,一是利用二维码的容错率,二是利用识别工具的纠错能力。这次的二维码,让我有点excited,居然把动画和二维码结合起来了。当然,具体把这种二维码叫什么,我也定不了,叫动画二维码、动态二维码、gif二维码都可以吧。
动画二维码和之前的美化过的二维码其实原理上也一样,还是利用容错和纠错。我使用这个开源的py版本生成里一个动画二维码,发现它把容错率设的很高,然后把位置探测部分和定位图形、校正图形都保持原样填充,把其它数据部分只保留中央的一小部分,其它部分透明来放gif。我写的版本,使用一般的生成方式,并且只完整保留了位置探测部分,发现也能在微信和QQ里识别。
理论上来说,函数式语言来写这种应用型的东西,并不是很合适。然而,F#并不是一门纯函数式语言,所以,也可以写得很爽。
下面是一个二维码生成的类,使用了QrCode.Net进行生成,这个生成很简单,几乎所有语言都有这样的二维码生成库。不同的是,在这里,我把生成的二维码按GridWidth进行放大,把KeyGrid全部填充,而其他的内容格子留了TransparentWidth的透明。



然后,使用ImageProcessor,来将gif图与二维码图合并到一起,就完成了目的了,测试可以识别。


在博客园,这个gif只播一次,应该是被博客园后台处理过了,实际生成的原始gif是可以循环动画的。
F#之旅8 - 图片处理应用之动画二维码的更多相关文章
- 移动端禁止图片长按和vivo手机点击img标签放大图片,禁止长按识别二维码或保存图片【转载】
移动端禁止图片长按和vivo手机点击img标签放大图片,禁止长按识别二维码或保存图片 img{ pointer-events: none; } 源文地址:https://www.cnblogs.com ...
- phpqrcode生成带logo的二维码图片及带文字的二维码图片
<?php require_once "./phpqrcode/phpqrcode.php"; /** * 这样就可以生成二维码了,实际上在png这个方法里还有几个参数需要使 ...
- 微信小程序实战篇-图片的预览、二维码的识别
开篇 今天,做的小程序项目要求,个人中心的客服图片在用户长按时可以识别其二维码,各种翻阅查找,采坑很多,浪费了很多时间,在这里记录下需要注意的点,以及对小程序官方提供的API做一个正确和清晰的认知,希 ...
- JAVA根据URL生成二维码图片、根据路径生成二维码图片
引入jar包 zxing-2.3.0.jar.IKAnalyzer2012_u6.jar 下载地址:https://yvioo.lanzous.com/b00nlbp6h ...
- JAVA生成二维码图片代码
首先需要导入 QRCode.jar 包 下载地址看这里 http://pan.baidu.com/s/1o6qRFqM import java.awt.Color;import java.awt. ...
- C#/.net 通过js调用系统相机进行拍照,图片无损压缩后进行二维码识别
这两天撸了一个需求,通过 JS 调用手机后置相机,进行拍照扫码.前台实现调用手机相机,然后截取图片并上传到后台的功能.后台接收传过来的图片后,通过调用开源二维码识别库 ZXing 进行二维码数据解析 ...
- QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
目录 功能介绍 常见问题 效果图与示例 apk Gradle 依赖 布局文件 自定义属性说明 接口说明 关于我 功能介绍 根据之前公司的产品需求,参考 barcodescanner 改的,希望能帮助到 ...
- .net core 的图片处理及二维码的生成及解析
写代码这事,掐指算来已经十有余年. 从html到css到javascript到vbscript到c#,从兴趣到职业,生活总是失落与惊喜并存. 绝大部分时候,出发并不是因为知道该到哪里去,只是知道不能再 ...
- PHP生成小程序二维码合成图片生成文字
这部分代码是写在项目上的代码,THINKPHP3.1如果迁移到其他的地方应该要稍稍改动一下以适合自己的项目 function get_bbox($text,$fsize,$ffile){ return ...
随机推荐
- sql 批量更新某个字段的值
UPDATE Tabel1 t1 set t1.col1= ( SELECT col2 from Tabel2 t2 WHERE t1.col1=t2.col2) where exists ( SEL ...
- lcok-free简易实现
lock-free是一种基于原子变量类来构建的非阻塞同步算法. 比较并交换(compare-and-swap) 我们经常会先检查某项东西,然后对其进行修改,如if(X...) {X=...}.这种行为 ...
- MySQL练习-employees数据库(一)
安装一个数据库示例--employees 使用工具为Navicat--(ctrl + q: 打开新查询窗口 ctrl + r: 运行当前窗口内的所有语句) 参考http://www.cnblogs.c ...
- Linux 基础命令
man 帮助命令 命令 --help 命令的简单帮助 help 命令的帮助(bash的内置命令) mkdir 创建目录 如makdir /data mkdir ...
- linux 复 带进度条
rsync命令 #rsync -av --progress /mnt/yidong2/full20100526.tar.gz /mnt/yidong1/ 可以实现本机带进度条提示拷贝,可以实现不同机器 ...
- 前端工具HBuilder安装Sass插件
HBuilder自带未安装的less插件,但是sass插件却没有,需要自己安装,步骤如下: 1.安装sass,参考: http://www.w3cplus.com/sassguide/install. ...
- http://www.sqlservercentral.com/articles/Failover+Clustered+Instance+(FCI)/92196/
http://www.sqlservercentral.com/articles/Failover+Clustered+Instance+(FCI)/92196/ http://blogs.msdn. ...
- xampp 下安装mysql-python
pip install mysql-python修改路径PATH="$PATH":(/mysql/bin 路径)brew install mysql-connector-c
- PHP获取某月天数
方式一: <?php function days($year,$month){ if($month<10){ $month = '0'.$month; } if($month == 12) ...
- ElasticSearch详解与优化设计
简介 概念 安装部署 ES安装 数据索引 索引优化 内存优化 1简介 ElasticSearch(简称ES)是一个分布式.Restful的搜索及分析服务器,设计用于分布式计算:能够达到实时搜索,稳定, ...