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 相关文章推荐
javascript日期转换 时间戳转日期格式
Nov 05 Javascript
js对象转json数组的简单实现案例
Feb 28 Javascript
JQuery中DOM事件冒泡实例分析
Jun 13 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
老生常谈Bootstrap媒体对象
Jul 06 Javascript
收藏AngularJS中最重要的核心功能
Jul 09 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
Sep 13 Javascript
BootstrapTable加载按钮功能实例代码详解
Sep 22 Javascript
php 解压zip压缩包内容到指定目录的实例
Jan 23 Javascript
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
JS前端基于canvas给图片添加水印
Nov 11 Javascript
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
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
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
零基础小白多久能学会python
2020/06/22 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
美国休闲服装品牌:Express
2016/09/24 全球购物
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
政府法律服务方案
2014/06/14 职场文书
共青团员自我评价范文
2014/09/14 职场文书
员工试用期自我评价
2014/09/18 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
2016七夕情人节感言
2015/12/09 职场文书
编写python程序的90条建议
2021/04/14 Python
Python自动化测试PO模型封装过程详解
2021/06/22 Python
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android