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 相关文章推荐
jquery获取div宽度的实现思路与代码
Jan 13 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
Feb 05 Javascript
如何用js控制frame的隐藏或显示的解决办法
Mar 20 Javascript
JavaScript中setInterval的用法总结
Nov 20 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
May 07 Javascript
node.js超时timeout详解
Nov 26 Javascript
JS模仿手机端九宫格登录功能实现代码
Apr 28 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
详解express + mock让前后台并行开发
Jun 06 Javascript
利用Node.js如何实现文件循环覆写
Apr 05 Javascript
JavaScript实现图片轮播特效
Oct 23 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
再说下636单管机
2021/03/02 无线电
php中去除所有js,html,css代码
2010/10/12 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
定义select的边框颜色
2008/04/28 Javascript
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
js时间控件只显示年月
2017/01/08 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
Python collections模块实例讲解
2014/04/07 Python
python使用socket进行简单网络连接的方法
2015/04/29 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
java判断三位数的实例讲解
2019/06/10 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
耐克中国官方商城:Nike中国
2018/10/18 全球购物
大学生个人自我鉴定
2013/12/03 职场文书
中学生期末评语
2014/02/03 职场文书
2014教师研修学习体会
2014/07/08 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
地震慰问信
2015/02/14 职场文书
重阳节慰问信
2015/02/15 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书