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 相关文章推荐
web开发人员学习jQuery的6大理由及jQuery的优势介绍
Jan 03 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
基于jQuery实现的文字按钮表单特效整理
Dec 07 Javascript
Jquery中Event对象属性小结
Feb 27 Javascript
深入浅析JS的数组遍历方法(推荐)
Jun 15 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
May 12 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
Aug 01 Javascript
浅谈微信小程序flex布局基础
Sep 10 Javascript
JavaScript控制台的更多功能
Apr 28 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
C# Assembly类访问程序集信息
2009/06/13 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
js表格分页实现代码
2009/09/18 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
深入理解Django-Signals信号量
2019/02/19 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
2014社区三八妇女节活动总结
2014/03/01 职场文书
户籍证明书标准模板
2014/09/10 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
电影雷锋观后感
2015/06/10 职场文书
化工生产实习心得体会
2016/01/22 职场文书
导游词之安徽九华山
2019/09/18 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python