转自: http://www.54php.cn/default/150.html ,经测试已在我自己服务器上成功运行。以下为原始文章:

【Demo】HTML5 拍照上传

作者:编程浪子 •  原创• 2017.06.15•  2165次阅读

本文主要讲解 手机浏览器 如何拍照

为什么会有这个需求

最近做一个项目要用到拍照然后上传照片,但是网页拍照一般都是用Flash做的,而我们主要是H5页面,如果在微信里面有权限就可以通过JSSDK调起摄像头拍照的。这里我们主要说下手机端浏览器如何调起摄像头

H5如何打开摄像头

不需要特别的支持,只需要一行代码就可以了

  1. <input id="upload" type="file" accept="image/*;" capture="camera" >

如何预览图

原理是用js获取input file的图像流,然后赋给img标签的src属性,然后再设置这个img的css,就能得到你要的效果了,代码如下

  1. ;
  2. var demo_h5_upload_ops = {
  3. init:function(){
  4. this.eventBind();
  5. },
  6. eventBind:function(){
  7. var that = this;
  8. $("#upload").change(function(){
  9. var reader = new FileReader();
  10. reader.onload = function (e) {
  11. that.compress(this.result);
  12. };
  13. reader.readAsDataURL(this.files[0]);
  14. });
  15. },
  16. compress : function (res) {
  17. var that = this;
  18. var img = new Image(),
  19. maxH = 300;
  20. img.onload = function () {
  21. var cvs = document.createElement('canvas'),
  22. ctx = cvs.getContext('2d');
  23. if(img.height > maxH) {
  24. img.width *= maxH / img.height;
  25. img.height = maxH;
  26. }
  27. cvs.width = img.width;
  28. cvs.height = img.height;
  29. ctx.clearRect(0, 0, cvs.width, cvs.height);
  30. ctx.drawImage(img, 0, 0, img.width, img.height);
  31. var dataUrl = cvs.toDataURL('image/jpeg', 1);
  32. $(".img_wrap").attr("src",dataUrl);
  33. $(".img_wrap").show();
  34. // 上传略
  35. that.upload( dataUrl );
  36. };
  37. img.src = res;
  38. },
  39. upload:function( image_data ){
  40. /*这里写上次方法,图片流是base64_encode的*/
  41. }
  42. };
  43. $(document).ready( function(){
  44. demo_h5_upload_ops.init();
  45. } );

实例演示

地址:http://m.54php.cn/demo/h5_upload   也可以手机扫描下图

测试结果报告

手机 UC浏览器 微信
IOS

支持拍照上传

支持图库选择上上传

支持拍照上传

支持图库选择上传

Android

支持拍照上传

支持图库选择上传

不支持拍照上传

支持图库选择上传

效果图

本人IOS 系统 亲自测试了UC浏览器和微信自带浏览器 完美兼容

html5手机拍照上传相关推荐

  1. html手机上传图片去除拍照,HTML5手机拍照上传

    首先需要在页面添加HTML5控件 capture="camera" 这样就可以在android5.0 或则 IOS 9.0 以上直接拉起照相机,但是这些版本之下的手机只能调用相册选 ...

  2. HTML5 实现手机拍照上传

    2019独角兽企业重金招聘Python工程师标准>>> 背景:移动端H5项目,需要实现调用手机拍照,并将图片压缩上传功能. 页面样式: 上传图片有原生的方法<input typ ...

  3. html5拍照上传 java_如何使用HTML5实现拍照上传应用

    在HTML5规范的支持下,WebApp在手机上拍照已经成为可能.在下面,我将讲解Web App如何用手机进行拍照,显示在页面上并上传到服务器. 1.  视频流 HTML5 The Media Capt ...

  4. java拍照上传功能_js实现手机拍照上传功能

    在前段时间的项目开发中,用到了拍照上传的地方,后来发现了最为简单的一种方法,现总结如下: 上传部分的JS代码: $("input[type='file']").on('change ...

  5. html5视频前端视频上传,手机拍照上传,手机录像上传

    我cao,真不知道该怎么说.看图吧 就是让客户点击按钮的时候可以触发到图二,手机自带的录像机.录像之后再上传. 当时的需求就是,(微信里面的)手机页面可以上传视频,也可以想图二那样.就是可以触发手机的 ...

  6. html5 android 拍照上传,android webview使用html5 上传相册、拍照照片

    本人编程新手,这次做的功能是android webview 嵌入HTML5的页面,页面中有一个标签,iOS直接就支持,但android中不支持,网上的帖子说是因为android屏蔽了文件上传功能还是怎 ...

  7. android实现华为手机拍照上传_继续引领手机拍照 华为将带来液态镜头

    点击上方蓝字[安兔兔]关注我 文章每天不断更! 在手机拍照方面,华为一直都处于领先地位,那么面对友商的疯狂追赶,在下一代旗舰机型上,华为要对镜头做出如何的升级才能避免自己不被超越呢? 据相关的博主爆料 ...

  8. html5 手机录音上传 源码,Html5网页JavaScript录制MP3并上传

    [实例简介]后端为 asp.net [实例截图] [核心代码] Html5网页JavaScript录制MP3音频 Html5网页JavaScript录制MP3音频 录制 停止 上传 调试信息: var ...

  9. vuejs手机拍照上传的方向旋转问题(已解决)

    在用vue做 移动端项目的时候. 特别是调用相机拍照的时候有些手机会旋转照片,导致拍出来是 歪的, 横着的, 这里记录下怎么解决这个问题. demo 请狠狠的戳这里 ¥  https://downlo ...

最新文章

  1. iOS网络缓存扫盲篇
  2. laydate 使用
  3. plupload上传插件绑定事件的两种方法
  4. Java SSM1——Maven
  5. 推荐系统遇上深度学习(九)--评价指标AUC原理及实践
  6. php环境模拟stphp_一个模拟浏览器请求的php类,模拟请求ua设置
  7. 信息管理系统界面html_西宁市小升初信息管理系统http://221.207.8.71/
  8. OpenCV(二)OpenCV的介绍和发展
  9. Cocos2d-x学习之 整体框架描述
  10. 阶段3 3.SpringMVC·_06.异常处理及拦截器_2 SpringMVC异常处理之演示程序异常
  11. 【内网穿透笔记】NAPT类型测试与XTCP点对点内网穿透适用例外
  12. PostgreSQL中with和without time zone两者有什么区别
  13. AlphaPose环境配置与测试
  14. echarts组织架构图
  15. 我们为何渐渐放弃了自己的梦想?
  16. BugkuCTF writeup
  17. Python list 常见用法
  18. java通过手机号查询地区信息
  19. 量子通信(QKD)与BB84协议
  20. 第三章:资源,样式与模板

热门文章

  1. 网上测试眼镜的软件,测脸型配眼镜app
  2. uniApp小程序git clone后无法运行
  3. 嫦娥四号工程总共投入是多少?国家航天局回应
  4. React Native 音频录制例子来解惑入门,真的已经讲烂了
  5. [Azure DevOps] 如何安装并配置 Build Agent
  6. 港科夜闻|香港科大汪扬教授、李泽湘教授受邀出席2022年粤港澳大湾区青少年公益年会创科大咖说,分享大湾区未来创新机遇...
  7. 大数据重新定义‘餐饮行业增长黑客’/怎么用数据驱动餐饮行业到店营销
  8. 2019-7-2-WPF-通过-ReadyToRun-提升性能
  9. 新必应(new bing)申请
  10. shell脚本根据指定日期 得到月初,月末,季初,季末,年初,年末,周开始,周结束,旬初,旬末日期,报表日期