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 相关文章推荐
火狐浏览器(firefox)下获得Event对象以及keyCode
Nov 13 Javascript
使用jquery+CSS实现控制打印样式
Dec 31 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
May 06 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
Apr 16 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
利用Js+Css实现折纸动态导航效果实例源码
Jan 25 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
vue.js声明式渲染和条件与循环基础知识
Jul 31 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
JavaScript中this函数使用实例解析
Feb 21 Javascript
vue+animation实现翻页动画
Jun 29 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
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
python实现Floyd算法
2018/01/03 Python
Python3+Appium安装使用教程
2019/07/05 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
Python while true实现爬虫定时任务
2020/06/08 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
无工作经验者个人求职信范文
2013/12/22 职场文书
机关财务管理制度
2014/01/17 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
安全施工标语
2014/06/07 职场文书
党员一帮一活动总结
2014/07/08 职场文书
农村文化活动总结
2014/08/28 职场文书
中学生检讨书1000字
2014/10/28 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
兴趣班停课通知
2015/04/24 职场文书
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS