识别快递单号(2) - 加载图片到canvas
传送门: 识别快递单号(1) - 图像处理 转载请注明出处: http://www.cnblogs.com/zaiyuzhong/p/load-image-to-canvas.html
上篇说到我突然想到了一个问题: 这些代码究竟运行在什么位置, 手机端还是服务器? 又如何获取图片?
1. 手机端: 现在的浏览器还不支持javascript调用后置摄像头(Chrome可以调用前置摄像头), 需要开发一个App, 那么可以在拍照时确定条码的位置(像所有的扫码软件一样), 然后把这条线发送到服务器上. 那么服务器所做的就是灰度化, 二值化, 适当的闭操作让图像更清晰, 识别.
2. 服务器: 将上传来的图片灰度化, 二值化, 去除多余部分, 找到条码位置, 识别. 其中找条码位置比较复杂, 再一个比较浪费流量.
说到这里突然想起来还有html5呢, 获取选中的图片画到canvas上再处理. 做了一个尝试, 从<input type="file" />可以调用摄像头, 我用的是Android下的Chrome和iOS下的Safari来测试的.
如何通过<input type="file" />标签来获取数据请看这里: 如何预览将要上传的图片-使用H5的FileAPI
好了, 经过测试发现Chrome支持的很好, Safari不行, 寻找原因中... 测试代码如下:
<input type="file" id="upfile" />
<canvas style="border:1px solid #c3c3c3"></canvas>
<script>
document.querySelector('#upfile').onchange = function(evt){
if(evt.target.files.length < 1) return;
var file = evt.target.files[0];
if(file.type.match('image.*')) return; var reader = new FileReader();
reader.onloadend = function(e){
if(e.target.readyState == FileReader.DONE){
var c = document.querySelector('canvas');
var cxt = c.getContext('2d');
var img = new Image();
img.src = e.target.result;
c.width = img.width;
c.height = img.height; cxt.drawImage(img, 0, 0);
}
};
reader.readAsDataURL(file);
}
</script>
怀疑过图片加载延迟的问题, 改为img的onload事件中处理还是仅仅在Safari中没有图像. 在这个问题上浪费了不少时间, 暂时开始研究下一步, 以后看看能不能绕开绘制canvas这步. 嗯... 似乎Safari不支持javascript读取准备上传的照片... 好了这篇先这样, 下篇再接着说. 参考资料: Javascript图像处理系列
识别快递单号(2) - 加载图片到canvas的更多相关文章
- RX系列四 | RxAndroid | 加载图片 | 提交表单
RX系列四 | RxAndroid | 加载图片 | 提交表单 说实话,学RxJava就是为了我们在Android中运用的更加顺手一点,也就是RxAndroid,我们还是先一步步来,学会怎么去用的比较 ...
- 个人永久性免费-Excel催化剂功能第97波-快递单号批量查询物流信息
电商时代,快递已进千万家,做电商零售行业的,快递信息的再挖掘,也显得更有意义,是数据精细化运营中必不可少的一环.一般站在系统的角度,数据用于业务流转的增删改查使用,而对于分析需求来说,这些业务系统里集 ...
- jQuery-瀑布流-绝对定位布局(二)(延迟AJAX加载图片)
jQuery-瀑布流-绝对定位布局(二)(延迟AJAX加载图片) 瀑布流-绝对定位布局,与浮动布局的区别在于 1.布局不一样: 绝对定位:一个UL里面放置所有的绝对定位的LI: 浮动布局:多个(一 ...
- iOS网络加载图片缓存策略之ASIDownloadCache缓存优化
iOS网络加载图片缓存策略之ASIDownloadCache缓存优化 在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用 ...
- CSS和JavaScript以及Ajax实现预加载图片的方法及优缺点分析
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画 廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发 ...
- BitmapFactory 加载图片到内存
Bitmap占用内存分析 Android的虚拟机是基于寄存器的Dalvik,它的最大堆(单个进程可用内存)大小一般是16M,当然不同设备是不一样的,可以查看/system/build.prop文件,[ ...
- 快递单号自动识别接口API-trackingmore
一.快递单号自动识别接口功能说明 (1)PC电脑端.移动APP或者自建网站集成物流查询功能时,只需要用户输入单号即可,不需要输入快递公司. (2)此接口可以配合Trackingmore的快递查询API ...
- ajax实现快递单号查询
效果:(代码写的有点乱,自行修改就可以了) 源码: index.php <!DOCTYPE html> <html lang="en"> <head& ...
- ios UITableView 异步加载图片并防止错位
UITableView 重用 UITableViewCell 并异步加载图片时会出现图片错乱的情况 对错位原因不明白的同学请参考我的另外一篇随笔:http://www.cnblogs.com/lesl ...
随机推荐
- 菜鸟笔记:java编程基础一
Java中的关键字 Java 语言中有一些具有特殊用途的词被称为关键字.关键字对 Java 的编译器有着特殊的意义,在程序中应用时一定要慎重哦!! Java 中常用关键字: 问:这么多,记不住啊... ...
- JavaScript中的 offset, client,scroll
在js 中我们要用到的 offset, client, scroll 在这我把自己理解的给大家分享一下. offset div.offsetTop 指div距离上方或上层控件的距离,单位像素 div. ...
- Python目录
- PHP 查看安装信息
1.运行PHP脚本,查看phpinfo函数的输出. 2.在系统环境变量Path中配好php.exe可执行文件的路径,命令管理器CMD中,执行`php.exe -i`查看. 3.在phpinfo()的输 ...
- Owin Self Host
http://owin.org/ Owin 定义了webserver和webapplication之间的标准接口,目标就是为了解耦webapplication对webserver的依赖, 就是说以后可 ...
- C# Mvc异常处理过滤器
using System; using System.Text; using EMS.Domains.Core; using System.Web.Mvc; using Json.Net; using ...
- RSA原理及生成步骤
摘自:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html(可到原网址查看秘钥生成原理) RSA算法原理(一) 因为它是 ...
- Dcloud HTML5 监听蓝牙设备 调用 原生安卓实现
最近一直搞Dcloud ,这是HTML5版本的开发,打包时候,可以打包成 apk 和ipa 分别运行在安卓和ios 机器上面, 但是这里面的资料很少,遇到问题,之后只能自己钻研总结, 现在有这么一个需 ...
- c++中4个与类型转换相关的关键字分析
static_cast reinterpret_cast dynamic_cast const_cast 1.**static_cast------运算符完成相关类型之间的转换** 使用场景:如在同一 ...
- DOCKER 为新启用的容器配置外网IP
网卡的配置文件存储在 /etc/sysconfig/network-scripts/ 目录下.每个网卡的详细内容将会以不同的名字存储,比如ifcfg-enp0s3. 让我们看下ifcfg-enp0s3 ...