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. 去除页眉横线在页眉插入信息的时候经常会在下面出现一条横线,如果这条横线影响你的视觉。这时你可以采用下述的两种方法去掉:用第一种的朋友比较多,即选中页眉的内容后,选取“格式”选项,选取“边框…

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

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

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

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

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

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

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

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

合振动的初相位推导_基于振动信号的机械设备故障诊断(一)

1.概述振动在旋转机械设备故障中占了很大比重,是影响设备安全,稳定运行的重要因素。振动直接反应了设备的健康状况,是设备安全评估的重要指标。通过对振动分析方法的调查,熟悉一般的振动分析流程及方法,从而对检测设备…

linux 启动db2 服务器,Linux系统设置DB2等服务开机启动的过程

Linux系统中向要设置开机启动,就要通过代码来实现。通过编写脚本能够把服务加到Linux开机启动项中,本文就来介绍一下Linux系统中设置DB2等服务开机启动的过程。1.转到/etc/init.d 目录下。以root身份执行Shell代码cd /etc/init.d2.编写DB2启动脚本Shell代…

spring elasticsearch 按条件删除_SpringBoot2 高级案例(08):整合 ElasticSearch框架,实现高性能搜索引擎...

一、安装和简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。ElasticSe…

linux编译框架的搭建,Linux精华篇—CentOS 7.4下源码编译构建LNMP架构

CentOS 7.4搭建LNMP最新版本LNMP:Linux7.4、ngnix1.13.9、mysql5.7.20、php7.1.10目录:第一部分 准备工作第二部分 安装nginx服务第三部分 安装MySQL数据库第四部分 搭建PHP运行环境第五部分 LNMP架构应用(搭建DISCUZ论坛)第一部分 准备工作一&#xff1…

linux设备资源分配,基于Linux 简化 AMP 配置使其更方便更动态地分配资源

描述嵌入式系统一般分为两大类:需要硬实时性能的;和不需要硬实时性能的。过去,我们不得不做出艰难抉择: 选择实时操作系统的性能还是我们钟爱的 Linux 系统的丰富特性,然后努力弥补不足之处?如今,嵌入式开…

linux qt显示gif图片,QT显示GIF图片

在QT中要显示GIF图片,不能通过单单的添加部件来完成.还需要手动的编写程序.工具:QT Creator新建一个工程,我们先在designer中,添加一个QLabel部件.如下图:将QLabel拉成适当大小.在类cpp函数中添加如下程序:#include "widget.h"#include "ui_widget.h"#incl…

u盘启动蓝屏 索尼vaio_U盘重装系统出现蓝屏?不要急,这四个手段轻松帮你解决!...

现如今U盘重装系统是主流的重装系统方式,通过U盘PE重装系统是大多数用户重装电脑系统的第一选择。不过在用U盘重装系统的时候,进入PE系统有时候会出现一些问题。有用户进入PE系统就蓝屏,这是怎么回事呢?下面就让韩博士小编为大家带…

数据库系统工程师考c语言吗,2019年数据库系统工程师考点:DBMS的基本功能

【导语】2019年数据库系统工程师考试备考正在进行中,为了方便考生及时有效的备考,那么,无忧考网为您精心整理了2019年数据库系统工程师考点:DBMS的基本功能,欢迎大家的参考学习。如想获取更多数据库系统工程师考试的模…

android要求图标格式,Android设计规范 Material Design-Style(3图标)

图标系统图标定义系统图标或者UI界面中的图标代表命令、文件、设备或者目录。系统图标也被用来表示一些常见功能,比如清空垃圾桶、打印或者保存。系统图标的设计要简洁友好,有潮流感,有时候也可以设计的古怪幽默一点。要把很多含义精简到一个…

华为开发微信鸿蒙版,HUAWEI DevEco Studio

华为鸿蒙2.0开发平台为开发者在PC上面所提供的的开发平台,这个平台能够让用户在PC和Mac上面完成对鸿蒙相关开发内容,开发者能够在这个官方的平台当中开发属于自己的应用内容,更好的开发属于自己的应用并且在上面进行全面的调试,感…

function里面可以写function吗_和田玉不戴的时候,可以长时间泡在水里面吗?

叶子珠宝翡翠批发商城数百万玉石好友聚集地翡翠行业最活跃的领军,实力收藏家都在关注新朋友请点击叶子珠宝翡翠批发商城关注!抢购源头翡翠!请加1号店微信号:stchenchuye(←长按复制请加2号店微信号:feicui1236(←长按复…

android智能老人机系统,国产老人机也可以变智能!可运行Android

原标题:国产老人机也可以变智能!可运行Android相信很多用户对老人机的认知都是大电池、小屏幕、高音量以及功能少。看完下边这个老年机,你的认知可能会被颠覆。微博用户极客村长今天在微博上放出了一张来自国内厂商TETC的老人机图片&#xff…

golang商城_Golang——简单是终极的成熟

Google的Rob Pike在2012年的主题演讲中说:“ Go的目的不是要对编程语言设计进行研究; 这是为了为其设计师及其同事改善工作环境。 与编程语言研究相比,Go不仅仅是软件工程。 换一句话,它与软件工程服务中的语言设计有关。” 演讲揭…

android 换行模式,Android进阶之自定义View(1)实现可换行的TextView

今天来一起学习一下最简单的自定义view,自己动手写一个MyTextView,当然不会像系统的TextView那么复杂,只是实现一下TextView的简单功能,包括分行显示及自定义属性的处理,主要目的是介绍自定义view的实现的基本思路和需要掌握的一些基础知识。…

html调用chr,FpHtmlEnCode 函数之标题过滤特殊符号的代码

FpHtmlEnCode 函数之标题过滤特殊符号的代码更新时间:2007年09月01日 22:11:50 作者:函数名:FpHtmlEnCode作 用:标题过滤参 数:fString ------字符串Function FpHtmlEnCode(fString)If IsNull(fString)False or fS…