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 CSS选择器笔记
Mar 29 Javascript
javascript动态向网页中添加表格实现代码
Feb 19 Javascript
node.js中的fs.unlinkSync方法使用说明
Dec 15 Javascript
JavaScript把数组作为堆栈使用的方法
Mar 20 Javascript
jquery实现右侧栏菜单选择操作
Mar 04 Javascript
浅析Node.js实现HTTP文件下载
Aug 05 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
Aug 26 Javascript
jQuery实现图片轮播效果代码
Sep 27 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
Oct 05 Javascript
基于bootstrap写的一点localStorage本地储存
Nov 21 Javascript
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
Dec 10 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调用Java对象的方法
2006/10/09 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
python中对list去重的多种方法
2014/09/18 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
python游戏地图最短路径求解
2019/01/16 Python
python redis 删除key脚本的实例
2019/02/19 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
Python排序函数的使用方法详解
2020/12/11 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
会计电算化毕业生自荐信
2014/03/03 职场文书
售后客服工作职责
2014/06/16 职场文书
五一活动标语
2014/06/30 职场文书
护理专科学生自荐书
2014/07/05 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
先进班组事迹材料
2014/12/25 职场文书
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
什么是css原子化,有什么用?
2022/04/24 HTML / CSS