html5+php调用android手机图片,html5+exif.js+canvas+php实现手机上传图片,图片损坏无法打开...

上传图片,图片损坏无法打开,图片路径也是正确的,

function selectFileImage(fileObj) {

var file = fileObj.files['0'];

//图片方向角 added by lzk

var Orientation = null;

if (file) {

console.log("正在上传,请稍后...");

var rFilter = /^(image\/jpeg|image\/png)$/i; // 检查图片格式

if (!rFilter.test(file.type)) {

//showMyTips("请选择jpeg、png格式的图片", false);

return;

}

// var URL = URL || webkitURL;

//获取照片方向角属性,用户旋转控制

EXIF.getData(file, function() {

// alert(EXIF.pretty(this));

EXIF.getAllTags(this);

//alert(EXIF.getTag(this, 'Orientation'));

Orientation = EXIF.getTag(this, 'Orientation');

//return;

});

var oReader = new FileReader();

oReader.onload = function(e) {

//var blob = URL.createObjectURL(file);

//_compress(blob, file, basePath);

var image = new Image();

image.src = e.target.result;

image.onload = function() {

var expectWidth = this.naturalWidth;

var expectHeight = this.naturalHeight;

if (this.naturalWidth > this.naturalHeight && this.naturalWidth > 800) {

expectWidth = 800;

expectHeight = expectWidth * this.naturalHeight / this.naturalWidth;

} else if (this.naturalHeight > this.naturalWidth && this.naturalHeight > 1200) {

expectHeight = 1200;

expectWidth = expectHeight * this.naturalWidth / this.naturalHeight;

}

var canvas = document.createElement("canvas");

var ctx = canvas.getContext("2d");

canvas.width = expectWidth;

canvas.height = expectHeight;

ctx.drawImage(this, 0, 0, expectWidth, expectHeight);

var base64 = null;

//修复ios

if (navigator.userAgent.match(/iphone/i)) {

console.log('iphone');

//alert(expectWidth + ',' + expectHeight);

//如果方向角不为1,都需要进行旋转 added by lzk

if(Orientation != "" && Orientation != 1){

alert('旋转处理|'+Orientation);

switch(Orientation){

case 6://需要顺时针(向左)90度旋转

alert('需要顺时针(向左)90度旋转');

rotateImg(this,'left',canvas);

break;

case 8://需要逆时针(向右)90度旋转

alert('需要顺时针(向右)90度旋转');

rotateImg(this,'right',canvas);

break;

case 3://需要180度旋转

alert('需要180度旋转');

rotateImg(this,'right',canvas);//转两次

rotateImg(this,'right',canvas);

break;

}

}

/*var mpImg = new MegaPixImage(image);

mpImg.render(canvas, {

maxWidth: 800,

maxHeight: 1200,

quality: 0.8,

orientation: 8

});*/

base64 = canvas.toDataURL("image/jpeg", 0.8);

}else{

if(Orientation != "" && Orientation != 1){

//alert('旋转处理');

switch(Orientation){

case 6://需要顺时针(向左)90度旋转

alert('需要顺时针(向左)90度旋转');

rotateImg(this,'left',canvas);

break;

case 8://需要逆时针(向右)90度旋转

alert('需要顺时针(向右)90度旋转');

rotateImg(this,'right',canvas);

break;

case 3://需要180度旋转

alert('需要180度旋转');

rotateImg(this,'right',canvas);//转两次

rotateImg(this,'right',canvas);

break;

}

}

base64 = canvas.toDataURL("image/jpeg", 0.8);

}

// var str="

%22%20+base64+%20%22
";

// $(".img_add").append(str);

// uploadImage(base64);

$('#myupload').ajaxSubmit({

data:{'img':base64},

dataType: 'json',

success: function (data) {

if(data.error!='0'){

alert(data.error);

}

if(data.pic){

var pic=data.pic;

if (pic.substring(0,1)=='.'){

s=pic.substring(1);

}

var str="

%22%20+s+%20%22
";

$(".img_add").append(str);

}

},

error: function () {

alert('上传失败');

},

})

$("#img_add").attr("src", base64);

};

};

oReader.readAsDataURL(file);

}

}

php上传服务器部分

public function uploadimg(){

$opensession=$this->opensession;

$path = './Public/Uploads/Friends/'.$opensession['openid']."_".$_POST['openid']."/";//上传路径

if (isset($_POST)) {

$img = $_POST['img'];

$img = str_replace('data:image/png;base64,', '', $img);

$img = str_replace(' ', '+', $img);

$data = base64_decode($img);

$pic_name = time() . rand(10000, 99999) . ".png" ;//图片名称

$pic_url = $path . $pic_name;//上传后图片路径+名称

if (file_put_contents($pic_url, $data)) { //临时文件转移到目标文件夹

echo json_encode(array("error"=>"0","pic"=>$pic_url,"name"=>$pic_name));

} else {

echo json_encode(array("error"=>"上传失败!"));

}

}

}

大神 ,请问这是什么原因

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word 编辑域中的汉字_15条Word常用操作教程,简单实用,纯干货分享,收藏备用!...

点击蓝字关注我们1. 去除页眉横线在页眉插入信息的时候经常会在下面出现一条横线,如果这条横线影响你的视觉。这时你可以采用下述的两种方法去掉:用第一种的朋友比较多,即选中页眉的内容后,选取“格式”选项,选取“边框…

matlab里面连接器是什么,连接器

连接器连接器,即CONNECTOR。国内亦称作接插件、插头和插座。一般是指电连接器。即连接两个有源器件的器件,传输电流或信号。它广泛应用于航空、航天、国防等军用系统中。连接器是我们电子工程技术人员经常接触的一种部件。它的作用非常单纯:在…

安卓抓包软件_Packet Capture安卓抓包神器介绍及使用教程

除了干货,其他什么也没有源码|资源|软件|教程|揭秘关 注Packet Capture是一款安卓抓包软件,能用来提取用户操作程序内容,Packet Capture可以捕获网络数据包,并记录它们使用中间人技术…

队列处理高并发_高并发场景下缓存处理的一些思路

在实际的开发当中,我们经常需要进行磁盘数据的读取和搜索,因此经常会有出现从数据库读取数据的场景出现。但是当数据访问量次数增大的时候,过多的磁盘读取可能会最终成为整个系统的性能瓶颈,甚至是压垮整个数据库,导致…

多元线性回归分析matlab实验报告,利用MATLAB进行多元线性回归.ppt

《利用MATLAB进行多元线性回归.ppt》由会员分享,可在线阅读,更多相关《利用MATLAB进行多元线性回归.ppt(15页珍藏版)》请在人人文库网上搜索。1、2.线性回归,bregress(y,X) b,bint,r,rint,sregress(y,X,alpha),输入: y因变量(列向量), X1与自变量组成的矩…

python3.6安装tensorflow gpu_tensorflow-gpu安装的常见问题及解决方案

装tensorflow-gpu的时候经常遇到问题,自己装过几次,经常遇到相同或者类似的问题,所以打算记录一下,也希望对其他人有所帮助基本信息tensorflow-gpupip安装(virtualenv等虚拟安装实质也是pip安装,只是建了个独立的环境&…

php env 没有值,PHP DOTENV无法加载env变种

我正在使用php dotenv for env vars for my php application .自述文件说我可以将 php dotenv 加载到我的应用程序中:$dotenv new Dotenv\Dotenv(__DIR__);$dotenv->load();当我尝试登录时,出现500错误 . 我试着 var_dump ing我的 $dotenv var看看它…

pywin32 获取窗口句柄_Excel VBA | 这个窗口居然关不掉

我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!还有关不掉的窗体?先来看下效果:通过上图,大家很容易看出二者之…

python mysql驱动写入datetime类型的数据_解决python写入mysql中datetime类型遇到的问题...

刚开始使用python,还不太熟练,遇到一个datetime数据类型的问题:在mysql数据库中,有一个datetime类型的字段用于存储记录的日期时间值。python程序中有对应的一个datetime变量dt。现在需要往mysql数据库中添加记录,每次…

php 函数命名 特殊字符,php 特殊字符处理函数

php 特殊字符处理函数发布于 2014-09-27 23:15:58 | 202 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门…

hough变换连接边缘matlab,边缘检测与Hough变换实验报告 Matlab - 图文

《边缘检测与Hough变换实验报告 Matlab - 图文》由会员分享,可在线阅读,更多相关《边缘检测与Hough变换实验报告 Matlab - 图文(5页珍藏版)》请在人人文库网上搜索。1、边缘检测与Hough变换实验报告 Matlab - 图文边缘检测与Hough变换 实验目的&#xff…

python玫瑰花数量的含义_玫瑰花数量代表含义

个人收集整理-ZQ1 / 3支玫瑰一心一意,一见钟情.约会求婚赠花朵你是我地唯一朵玫瑰代表我地心中只有你支玫瑰成双成对,喜结良缘.夫妻,恋人互增朵你浓我浓,世界只有你和我支玫瑰我爱你赠爱人,朋友朵玫瑰代表我爱你支玫瑰四季平安赠友人,居家朵誓言、承诺朵玫瑰代表至死…

php获取视频第一帧生成gif,thinkphp如何从gif提取第一帧生成静态缩略图

在开发app项目中,为了节省以及加快客户端的加载速度,在展示gif的位置需要提供静态图加载,点击放大才加载实际的动态图片。那么在thinkphp中如何使用GD库去截取gif第一帧生成静态缩略图,具体看下面实现的方式。1、修改文件/ThinkPH…

cassss服务未启动_电梯启动死机故障处理方法

电梯情况描述:广东奥的斯,有机房 梯龄5年故障现象描述:现场人员反馈,停梯一晚,第二天开梯,门一开就死机,显示HAD,断电复位后电梯正常维修过程描述:1、到达现场查看历史故…

php 位 逻辑,php – 在Laravel中放置菜单逻辑的位置?

Note: this answer was written for Laravel 3 and might or might not work with the most recent Laravel 4我最喜欢的创建动态菜单的方法是通过将菜单部分与主布局分开并通过Laravel’s Composer注入菜单数据来实现的(不要将它与Composer PHP包管理器混淆,它们是不同的)Titl…

python子进程的输出不可见_python-输出子进程调用的命令行?

美观且可扩展的方法我一直在使用这样的东西:#!/usr/bin/env python3import osimport shleximport subprocessimport sysdef run_cmd(cmd, cwdNone, extra_envNone, extra_pathsNone, dry_runFalse):if extra_env is None:extra_env {}newline_separator \\\nout …

双色球python十种算法_python : 蒙特卡罗算法 应用于双色球

参考书:算法设计与分析 王晓东 编著 :第7章 概率算法 7.5 蒙特卡罗算法http://www.gdfc.org.cn/datas/history/twocolorball/history_1.html 抓取双色球开奖数据2017001,09,11,14,20,25,26,152017002,15,19,23,24,25,32,032017003,01,04,08,15,27,32,16.…

红包指定分配金额php,php仿微信红包分配算法的实现方法_PHP

本文实例讲述了php仿微信红包分配算法的实现方法。分享给大家供大家参考,具体如下:/*** 红包分配:把一定金额随机分配给指定人数** param int $money 用于分配的金额* param int $num 分配人数*/function RandomMoney($money, $num) {echo &q…

python 大学教授整理_剑桥大学教授用时35天亲自整理,Python超详细的基础笔记

python简介python是一种面向对象的解释型计算机程序设计语言,python的是吉多范罗苏姆(Guido van Rossum)于1989年发明任何语言都有优缺点,python也不例外,python的优点是简单易懂、可移植性、可扩展性、可嵌入性,python的缺点&…

php 分析css,全面分析css属性选择器

1.[class~"flower"]:选中有flower的classclass"flower ss"class"ss flower"2.[class|top]:选择以top为top开头的class需要有—相连 或者单独的topclass"top-ss"class"top"class"top-ss"//选…