$('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. Salt-Formulas的使用

    Saltstack自0.17.x版本开始引进Formulas的概念,旨在通过简化State和集成数据来实现State的友好管理.根据SALT FORMULAS的官方文档,在完成手动添加formula目 ...

  2. Spark2.x(六十一):在Spark2.4 Structured Streaming中Dataset是如何执行加载数据源的?

    本章主要讨论,在Spark2.4 Structured Streaming读取kafka数据源时,kafka的topic数据是如何被执行的过程进行分析. 以下边例子展开分析: SparkSession ...

  3. 图形化SQL JOIN

  4. error Microsoft Visual C++ 14.0 is required 解决方案

    Windows平台上,pip install fastFM  scrapy等工具的时候,经常出现 error Microsoft Visual C++ 14.0 is required 的错误,   ...

  5. 【GMT43智能液晶模块】例程二十二:USB_HID实验——双向数据传输

    源代码下载链接: 链接:https://pan.baidu.com/s/1iSAUQnHoLI3WRPm-DimeSA 提取码:69vp 复制这段内容后打开百度网盘手机App,操作更方便哦 GMT43 ...

  6. React.lazy和React.Suspense异步加载组件

    在React16.6中引入了React.lazy和React.Suspense,这两个组件,可以用来实现异步加载组件. 例如: const johanComponent = React.lazy(() ...

  7. php-resque 队列简单使用

    一.安装 php-resque 进入项目根目录,composer 安装 php-resque composer require chrisboulton/php-resque 二.常用方法 1.连接 ...

  8. An unexpected exception occurred while binding a dynamic operation 错误的一种情况

    这种错误,出现在dynamic传值的时候,无法动态访问变量. 出错原因是: 使用了嵌套类,class里面又定义了class

  9. png8和png24的根本区别

    1.png8和png24的根本区别,不是颜色位的区别,而是存储方式不同. 2.png8有1位的布尔透明通道(要么完全透明,要么完全不透明),png24则有8位(256阶)的布尔透明通道(所谓半透明). ...

  10. docker添加mongo4.0.3并配置复制集

    1.创建docker 具体略过 自行百度 2.创建数据持久化目录文件(/data/mongo0是个例子 命名随意)  拉取mongo docker pull mongo:4.0.3 3.启动容器 do ...