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处理VBArray的函数使用说明
May 11 Javascript
eval的两组性能测试数据
Aug 17 Javascript
原生js实现半透明遮罩层效果具体代码
Jun 06 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
对frameset、frame、iframe的js操作示例代码
Aug 16 Javascript
关于数据与后端进行交流匹配(点亮星星)
Aug 03 Javascript
浅谈JavaScript find 方法不支持IE的问题
Sep 28 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
Aug 13 Javascript
从vue源码解析Vue.set()和this.$set()
Aug 30 Javascript
axios使用拦截器统一处理所有的http请求的方法
Nov 02 Javascript
React性能优化系列之减少props改变的实现方法
Jan 17 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
Sep 20 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
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python中的super用法详解
2015/05/28 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
Python书单 不将就
2017/07/11 Python
Python使用functools实现注解同步方法
2018/02/06 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
python常用数据重复项处理方法
2019/11/22 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
zooplus意大利:在线宠物商店
2019/08/07 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
厨房工作人员岗位职责
2013/11/15 职场文书
财务会计毕业生个人求职信
2014/02/03 职场文书
护士感人事迹
2014/05/01 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
预备党员个人总结
2015/02/14 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
php实现自动生成验证码的实例讲解
2021/11/17 PHP