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 相关文章推荐
js实现touch移动触屏滑动事件
Apr 17 Javascript
jQuery取消特定的click事件
Feb 29 Javascript
javascript原型继承工作原理和实例详解
Apr 07 Javascript
jQuery控制元素隐藏和显示
Mar 03 Javascript
详解Node.js模板引擎Jade入门
Jan 19 Javascript
mint-ui 时间插件使用及获取选择值的方法
Feb 09 Javascript
详解jQuery中的isPlainObject()使用方法
Feb 27 jQuery
JavaScript禁用右键单击优缺点分析
Jan 20 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
Apr 16 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
javascript中innerHTML 获取或替换html内容的实现代码
Mar 17 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
基于MySQL分区性能的详细介绍
2013/05/02 PHP
php动态函数调用方法
2015/05/21 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
python筛选出两个文件中重复行的方法
2018/05/31 Python
Python中GIL的使用详解
2018/10/03 Python
python爬取指定微信公众号文章
2018/12/20 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
关于打架的检讨书
2014/01/17 职场文书
交通事故检查书范文
2014/01/30 职场文书
中学生演讲稿
2014/04/26 职场文书
青春演讲稿范文
2014/05/08 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
地理科学专业自荐信
2014/09/01 职场文书
销售经理岗位职责
2015/01/31 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
python实现简单的聊天小程序
2021/07/07 Python
mysql脏页是什么
2021/07/26 MySQL
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python
HTML常用标签超详细整理
2022/03/19 HTML / CSS