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 相关文章推荐
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
Jan 11 Javascript
改变状态栏文字的js代码
Jun 13 Javascript
javascript中createElement的两种创建方式
May 14 Javascript
浅谈JS继承_借用构造函数 & 组合式继承
Aug 16 Javascript
jQuery grep()方法详解及实例代码
Oct 30 Javascript
jQuery事件绑定方法学习总结(推荐)
Nov 21 Javascript
分分钟玩转Vue.js组件(二)
Mar 01 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
Jan 27 Javascript
浅析vue中的MVVM实现原理
Mar 04 Javascript
VueCli3.0中集成MockApi的方法示例
Jul 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
在PHP中执行系统外部命令
2006/10/09 PHP
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
理解Javascript_08_函数对象
2010/10/15 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
Python制作钉钉加密/解密工具
2016/12/07 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
迪拜航空官方网站:flydubai
2017/04/20 全球购物
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
应届毕业生的个人自我鉴定
2013/10/24 职场文书
党员公开承诺书范文
2014/03/25 职场文书
工业设计专业自荐书
2014/06/05 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
大学同学聚会感言
2015/07/30 职场文书
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js