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 ...
随机推荐
- nestjs pm2 启动 静态文件404报错
不要直接使用pm2 start 可执行文件,静态文件会显示404. 使用如下方式:
- Weblogic部署web项目代码中获取项目名为null的问题
写在前面 这个问题之前遇到一次, 时间久就忘了, 还是好记性不如烂笔头, 记一下吧.Windows下部署到Tomcat和Linux下部署到Weblogic的获取项目名写法. 关键代码 java代码 w ...
- Python开源项目Top30
原文地址:https://www.cnblogs.com/stoker/p/9101825.html No 1:Home-assistant (v0.6+) 基于Python 3的开源家庭自动化平台[ ...
- Spring不能直接@autowired注入Static变量/ 关于SpringBoot的@Autowired 静态变量注入
昨天在编写JavaMail工具类的时候,静态方法调用静态变量,这是很正常的操作,当时也没多想,直接静态注入. @Component public class JavaMailUtil { @Autow ...
- [原]使用global mapper 修改影像数据DOM的投影变换(将数据转换成osgearth支持的投影)
osgearth默认使用的投影基准面为: Geographic(Latitude/Longitude)的 WGS84 有这样一份数据需要修改: 1.在菜单栏种选择“工具”---->“配置” 2. ...
- JMeter压测上对于并发的认识误区
1.误区 在JMeter压测过程中,我们通常认为1s内100的并发量(即:QPS为100)的设置如下: 此时,没有再添加额外的控制器.上述中的参数设置解释:Number of Threads(user ...
- 9个PNG透明图片免费下载网站推荐
9个PNG透明图片免费下载网站推荐 酷站推荐 2017.08.06 13:47 png格式的图片因为去掉了的背景,方便使用在任何颜色的背景,所以对于从事设计师的朋友来说,经常会用到png透明图片.相信 ...
- Linux performance monitor tool
https://www.tecmint.com/command-line-tools-to-monitor-linux-performance/ https://www.tecmint.com/lin ...
- 查找算法(1)--Sequential search--顺序查找
1. 顺序查找 (1)说明 顺序查找适合于存储结构为顺序存储或链接存储的线性表. (2)基本思想 顺序查找也称为线形查找,属于无序查找算法.从数据结构线形表的一端开始,顺序扫描,依次将扫描到的 ...
- 深度相机Astra Pro测试教程
最近在微信群内,很多群友在群友的推荐下,购买了Astra pro的深度相机,价格地道,物超所值!群友反馈积极,所以这里出一波简单的教程. 以下内容知识抛砖引玉,主要讲解windows下和Ubunt ...