jQuery获取file控件中图片的宽高与大小


Posted in Javascript onAugust 04, 2016

问题

如何判断input file表单里上传的图片的宽高和大小呢?

解决方案

这个时候图片还没真正上传,也不是在页面上展示,不能使用$(“#id”).width(),$(“#id”).height()这种方式。

在Stack Overflow找到一个方法获取input file图片文件的宽高:

var _URL = window.URL || window.webkitURL;
$("#file").change(function (e) {
  var file, img;
  if ((file = this.files[0])) {
    img = new Image();
    img.onload = function () {
      alert(this.width + " " + this.height);
    };
    img.src = _URL.createObjectURL(file);
  }
});

发现可以用,仅在火狐中测试了,其他浏览器兼容性未知,因为后台使用,所以暂且不管兼容性,拿来封装了一下。

我把这个函数完善了一下,获取input file图片的宽高和大小,如下:

//获取input图片宽高和大小
function getImageWidthAndHeight(id, callback) {
  var _URL = window.URL || window.webkitURL;
  $("#" + id).change(function (e) {
    var file, img;
    if ((file = this.files[0])) {
      img = new Image();
      img.onload = function () {
        callback && callback({"width": this.width, "height": this.height, "filesize": file.size});
      };
      img.src = _URL.createObjectURL(file);
    }
  });
}

这里使用了一个回调方法,回调方法的参数是这个json对象,包含宽度、高度和大小,在jQuery中这样调用

(function () {
  //省略其他代码
  getImageWidthAndHeight('image_file', function (obj) {
   if (obj.width != 843 || obj.height != 1038) {
    $.messager.alert('操作提示', '弹窗图片宽高必须是843*1038px');
   }
  });
})(jQuery)

好了,这样就OK了。以上就是jQuery获取intput file图片的宽高和大小的全部内容了,相信本文的内容会对大家平时使用jQuery和图片上传的时候很有帮助的。

Javascript 相关文章推荐
csdn 博客中实现运行代码功能实现
Aug 29 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
Dec 31 Javascript
11种ASP连接数据库的方法
Sep 18 Javascript
JavaScript数组的栈方法与队列方法详解
May 26 Javascript
JS实现焦点图轮播效果的方法详解
Dec 19 Javascript
浅谈JS函数节流防抖
Oct 18 Javascript
AnglarJs中的上拉加载实现代码
Feb 08 Javascript
Vue.js实现图片的随意拖动方法
Mar 08 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
Dec 18 Javascript
JS函数参数的传递与同名参数实例分析
Mar 16 Javascript
浅谈React中组件逻辑复用的那些事儿
May 21 Javascript
JS指定音频audio在某个时间点进行播放
Nov 28 Javascript
JS 数字转换为大写金额的简单实例
Aug 04 #Javascript
js事件冒泡、事件捕获和阻止默认事件详解
Aug 04 #Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 #Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 #Javascript
window.open不被拦截的简单实现代码(推荐)
Aug 04 #Javascript
js实现多图左右切换功能
Aug 04 #Javascript
window.open打开窗口被拦截的快速解决方法
Aug 04 #Javascript
You might like
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
jQuery知识点整理
2015/01/30 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
python多进程中的内存复制(实例讲解)
2018/01/05 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python获取地震信息 微信实时推送
2019/06/18 Python
机器学习实战之knn算法pandas
2019/06/22 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
Python高并发和多线程有什么关系
2020/11/14 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
墨西哥购物网站:Elektra
2020/01/21 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
介绍一下JMS编程步骤
2015/09/22 面试题
揠苗助长教学反思
2014/02/04 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
大学生求职信
2014/06/17 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
财务会计岗位职责
2015/02/03 职场文书
文明旅游倡议书
2015/04/28 职场文书