$('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实现图片上传的更多相关文章

  1. Jquery自定义图片上传插件

    1 概述 编写后台网站程序大多数用到文件上传,可是传统的文件上传控件不是外观不够优雅,就是性能不太好看,翻阅众多文件上传控件的文章,发现可以这样去定义一个文件上传控件,实现的文件上传的效果图如下: 2 ...

  2. jquery实现图片上传前本地预览

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  3. jquery 实现图片上传,并在前端显示出来

    目前遇到一个图片上上传的需求,突然发现,原来之前都没有做过此种类型的需求,以下是需求样式: 看到需求后之所以有点懵,是因为我接触到的文件上传,一般都是按钮类型的,例如以下这种: 深呼吸,好好想一下,整 ...

  4. jquery之图片上传

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  5. jQuery plugins 图片上传

    http://plugins.jquery.com/ 用到一下插件: magnific popup 看大图 jQuery File Upload 多文件上传 jQuery Rotate 图片旋转 gi ...

  6. ThinkPHP5与JQuery实现图片上传和预览效果

    内容正文 这篇文章主要为大家详细介绍了thinkphp上传图片功能,和jquery预览图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先上效果图: html和js代码如下: <!DO ...

  7. 基于jquery实现图片上传本地预览功能

    一.原理 分为两步: 当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL),把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来.在这里,我们需 ...

  8. JQuery实现 图片上传

    用到的文件,我都已经打包好了,自行下载: https://files.cnblogs.com/files/lguow/lib.rar 核心代码如下: <input type="hidd ...

  9. jquery实现图片上传前本地预览功能

    HTML <img id="pic" src="" > <input id="upload" name="fil ...

  10. jquery实现图片上传前的预览

    html代码 <div id="uploadPreview"></div> <input id="uploadImage" typ ...

随机推荐

  1. js待学习

    异步原理 事件循环 任务队列

  2. JVM探究之 —— 类文件结构(脑图)

  3. 取response里 Json格式的字段值

    1.

  4. android : 解决android无法使用sun.misc.BASE64Encoder sun.misc.BASE64Decoder 的问题, 无需添加rt.jar

    一共包含: BASE64Decoder.java BASE64Encoder.java CEFormatException.java CEStreamExhausted.java CharacterD ...

  5. jconsole远程连接centos7 服务器上的tomcat来查看服务器状况(无密码版)

    1.修改tomcat  catalina.sh 代码解释:-Dcom.sun.management.jmxremote.port=6969 //连接端口,自定义不要与已有的端口冲突-Dcom.sun. ...

  6. -[UITableView copyWithZone:]: unrecognized selector sent to instance 0x7XXXXXX00

    -[UITableView copyWithZone:]: unrecognized selector sent to instance 0x7XXXXXX00 -[Class copyWithZon ...

  7. json 格式化处理工具

    json 格式化处理工具 用于JSON的快速命令行处理工具,简单无依赖. 我这边列举一些最常用的: 调试 http 请求时打印格式化后的数据 格式化本地或或流中的数据 获取 json 的键值或进行执行 ...

  8. MyBatis的CRUD

    MyBatis的增删改查,特点是只要定义接口,不用实现方法,sql语句在xml中配置,非常方便 文件结构 接口UserDao import com.jinke.domain.QueryVo; impo ...

  9. Python - Django - 中间件 process_request

    process_request 函数是中间件在收到 request 请求之后执行的函数 该函数的执行顺序是按照 settings.py 中中间件的配置顺序执行的 如果该函数返回 None,继续执行后面 ...

  10. java拼接字符串、格式化字符串方式

    1.代码 //+ String arg0 = "Bob"; String arg1 = "Alice"; System.out.println("he ...