HTML5实现微信拍摄上传照片功能


Posted in Javascript onApril 21, 2017

做了个微信的HTML5拍摄上传照片功能,问题重重...

前端代码

$(':file').on('change',function(){
  var file = this.files[0];
  var url = webkitURL.createObjectURL(file);

  /* 生成图片
  * ---------------------- */
  var $img = new Image();
  $img.onload = function() {

   //生成比例
   var width = $img.width,
     height = $img.height,
     scale = width / height;
   width = parseInt(800);
   height = parseInt(width / scale);

   //生成canvas
   var $canvas = $('#canvas');
   var ctx = $canvas[0].getContext('2d');
   $canvas.attr({width : width, height : height});
   ctx.drawImage($img, 0, 0, width, height);
   var base64 = $canvas[0].toDataURL('image/jpeg',0.5);

   //发送到服务端
   $.post('upload.php',{formFile : base64.substr(22) },function(data){
    $('#php').html(data);
   });

  }
  $img.src = url;

 });

后端代码

$base64 = $_POST['formFile'];
$IMG = base64_decode( $base64 );
file_put_contents('1.png', $IMG );

实测:

电脑端

chrome 版本29,上传成功,源图片3M,压缩后1024 * 比例,约250kb 通过!

移动端

android 版本4+,微信,点击上传无反应,在手机浏览器中打开可上传,拍摄约3M-,压缩后1024* 比例,约3M-,根本没压缩嘛!!! 失败!

iphone4 & 4s 版本6+ 微信,拍摄约3M-,压缩后1024 * 比例,约250kb 通过!

iphone5 版本6+ 微信,生成canvas变形。失败!

总结:系统级BUG,无解.... 这下不知道怎么办了..

--------------------------------------- 后续报告 2013年09月12日 ----------------------------------------------

找到个牛人写的javascript编译jpg的插件,javascript_jpeg_encoder。

用这个办法可以解决android无法压缩图片的问题。

目前还剩2个系统级BUG。

1. 微信android版本无法响应上传控件 input tyle=file;

2. iphone5 生成canvas失败,画面扭曲。

--------------------------------------- 后续报告2 2013年10月10日 ---------------------------------------------

同样有一位牛人写的 ios-imagefile-megapixel 插件,解决了iphone5+画面扭曲的问题。

目前还剩1个系统级BUG。

微信android版本无法响应上传控件 input tyle=file;

--------------------------------------- 后续报告3 2014年5月16日 ---------------------------------------------

目前所有问题都解决了,在github上建立了插件,有需要的朋友可以去获取一下,顺便说一下,时间过的真快。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中parseInt()函数的定义和用法分析
Dec 20 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
Oct 27 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
Feb 10 Javascript
JavaScript数组迭代方法
Mar 03 Javascript
Vue.js实现移动端短信验证码功能
Mar 29 Javascript
Vue.js组件通信的几种姿势
Oct 23 Javascript
vue中的模态对话框组件实现过程
May 01 Javascript
vue用递归组件写树形控件的实例代码
Jul 19 Javascript
ES6的解构赋值实例详解
May 06 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
Oct 25 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 #jQuery
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
Apr 21 #Javascript
H5图片压缩与上传实例
Apr 21 #Javascript
H5手机端多文件上传预览插件
Apr 21 #Javascript
ES6新特性八:async函数用法实例详解
Apr 21 #Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
Apr 21 #Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
Apr 21 #jQuery
You might like
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP中PDO基础教程 入门级
2011/09/04 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
PHP图片加水印实现方法
2016/05/06 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
幼儿园家长会邀请函
2014/01/15 职场文书
认购协议书范本
2014/04/22 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
盗窃案辩护词
2015/05/21 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
Redis 限流器
2022/05/15 Redis
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python