jQuery实现图片上传
$('input[type="file"]').change(function(event) {
var currentTarget = event.currentTarget;
var currentFile = currentTarget.files[0];
var fr = new FileReader();
var img = new Image();
fr.onload = function() {
img.src = this.result;
img.onload = function() {
var imgData = self.compressWithRatio(img, {
maxWidth: 780,
maxHeight: 1560,
quality: 1
});
self.uploadFile(imgData);
};
};
fr.readAsDataURL(currentTarget.files[0]);
});
=====================================
compress: function(img, width, height, quality) {
// var orient = this.getPhotoOrientation(img);
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d'); if (width > height) {
canvas.width = height;
canvas.height = width;
ctx.save();
ctx.translate(height / 2, width / 2);
ctx.rotate(90 * Math.PI / 180);
ctx.drawImage(img, -width / 2, -height / 2, width, height);
ctx.restore();
} else {
canvas.width = width;
canvas.height = height;
ctx.drawImage(img, 0, 0, width, height);
}
// 针对iphone照片自动旋转 兼容处理
// canvas.width = width;
// canvas.height = height;
// if (orient == 6) {
// ctx.save();
// ctx.translate(width / 2, height / 2);
// ctx.rotate(90 * Math.PI / 180);
// ctx.drawImage(img, -height / 2, -width / 2, height, width);
// ctx.restore();
// } else {
// ctx.drawImage(img, 0, 0, width, height);
// } return canvas.toDataURL('image/jpeg', quality || 0.6);
},
=====================================
compressWithRatio: function(img, settings) {
var maxWidth, maxHeight;
var w = img.width;
var h = img.height;
// 调整宽度
if ((maxWidth = settings.maxWidth) > 0 && w > maxWidth) {
h = maxWidth / w * h;
w = maxWidth;
}
// 调整高度
if ((maxHeight = settings.maxHeight) > 0 && h > maxHeight) {
w = maxHeight / h * w;
h = maxHeight;
} return this.compress(img, w, h, settings.quality);
}, getPhotoOrientation: function(img) {
var orient;
EXIF.getData(img, function() {
orient = EXIF.getTag(this, 'Orientation');
});
return orient;
}, uploadFile: function(imgIndex, imgData) {
var formData = new FormData();
formData.append('imageData', imgData);
formData.append('activityId', gactivityId);
formData.append('mobilePhone', mobilePhone);
formData.append('imageName', imgIndex); $.ajax({
url: uploadFileUrl,
type: 'post',
data: formData,
processData: false,
contentType: false,
dataType: 'json',
success: function(result) {
if (result.success) {
tank.errorTips("保存成功");
} else {
tank.errorTips(result.error_msg);
}
},
error: function() {
tank.errorTips("服务器错误");
}
});
},
jQuery实现图片上传的更多相关文章
- Jquery自定义图片上传插件
1 概述 编写后台网站程序大多数用到文件上传,可是传统的文件上传控件不是外观不够优雅,就是性能不太好看,翻阅众多文件上传控件的文章,发现可以这样去定义一个文件上传控件,实现的文件上传的效果图如下: 2 ...
- jquery实现图片上传前本地预览
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- jquery 实现图片上传,并在前端显示出来
目前遇到一个图片上上传的需求,突然发现,原来之前都没有做过此种类型的需求,以下是需求样式: 看到需求后之所以有点懵,是因为我接触到的文件上传,一般都是按钮类型的,例如以下这种: 深呼吸,好好想一下,整 ...
- jquery之图片上传
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- jQuery plugins 图片上传
http://plugins.jquery.com/ 用到一下插件: magnific popup 看大图 jQuery File Upload 多文件上传 jQuery Rotate 图片旋转 gi ...
- ThinkPHP5与JQuery实现图片上传和预览效果
内容正文 这篇文章主要为大家详细介绍了thinkphp上传图片功能,和jquery预览图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先上效果图: html和js代码如下: <!DO ...
- 基于jquery实现图片上传本地预览功能
一.原理 分为两步: 当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL),把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来.在这里,我们需 ...
- JQuery实现 图片上传
用到的文件,我都已经打包好了,自行下载: https://files.cnblogs.com/files/lguow/lib.rar 核心代码如下: <input type="hidd ...
- jquery实现图片上传前本地预览功能
HTML <img id="pic" src="" > <input id="upload" name="fil ...
- jquery实现图片上传前的预览
html代码 <div id="uploadPreview"></div> <input id="uploadImage" typ ...
随机推荐
- [python]pypy优化python性能
下载地址:https://pypy.org/download.html # python2.7版本 yum install pypy # python3.6版本https://bitbucket.or ...
- docker jenkins 插件安装提速
公司安装的jenkins 自动布署服务挂了,好像有漏洞一直搞,打算重新安装一个,随便再学习一下 一上来就用docker 解决问题 #!/bin/bash docker stop myjenkins d ...
- 004 制作自己的Java镜像
一:制作镜像 1.需要的知识 dockfile docker build Jpress : http://jpress.io/ 开源免费的新媒体运营系统 2.下载jpress http:/ ...
- xargs在shell的执行不能为空需要先判断
PID=`jps -l | grep office |grep -v 'grep'| awk '{print $1}' | xargs`if [ "$PID" ]then echo ...
- 【转载】 GPU状态监测 nvidia-smi 命令详解
原文地址: https://blog.csdn.net/huangfei711/article/details/79230446 ----------------------------------- ...
- java中静态方法中为什么不能使用this、super和直接调用非静态方法
这个要从java的内存机制去分析,首先当你New 一个对象的时候,并不是先在堆中为对象开辟内存空间,而是先将类中的静态方法(带有static修饰的静态函数)的代码加载到一个叫做方法区的地方,然后再在堆 ...
- 简单易用的录屏软件(保存为gif文件)
LICEcap https://licecap.en.softonic.com/ Create animated GIFs from your desktop LICEcap is an origin ...
- SDN实验---Ryu的应用开发(四)北向接口RESTAPI
一:推文 软件定义网络基础---REST API概述 软件定义网络基础---REST API的设计规范 二:掌握Ryu基本RESTAPI使用方法 (一)Ryu的RESTAPI (二) REST应用样例 ...
- git rebase使用场景
1. 当前分支落后拉取后,整理commit,使得提交历史为直线 git pull = git fetch + git merge git pull --rebase = git fetch + git ...
- [转]Gnome桌面的录屏插件easyscreencast
原文地址:https://www.linuxprobe.com/gnome-easyscreencast.html