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 相关文章推荐
UI Events 用户界面事件
Jun 27 Javascript
JS模板实现方法
Apr 03 Javascript
jquery ready函数、css函数及text()使用示例
Sep 27 Javascript
javascript 对象数组根据对象object key的值排序
Mar 09 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
May 25 Javascript
Javascript编写2048小游戏
Jul 07 Javascript
详解PHP中pathinfo()函数导致的安全问题
Jan 05 Javascript
详解如何在React组件“外”使用父组件的Props
Jan 12 Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
Vue运用transition实现过渡动画
May 06 Javascript
javascript实现京东快递单号的查询效果
Nov 30 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
PHP 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php中引用符号(&)的使用详解
2013/11/13 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
js实现文字头像的生成代码
2020/03/07 Javascript
selenium+python自动化测试之环境搭建
2019/01/23 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
python计算导数并绘图的实例
2020/02/29 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
日期和时间问题
2015/01/04 面试题
教师自我鉴定范文
2013/11/10 职场文书
信息部岗位职责
2013/11/12 职场文书
质检部部长职责
2013/12/16 职场文书
国贸专业求职信
2014/06/28 职场文书
法语专业求职信
2014/07/20 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
大学生学年个人总结
2015/02/15 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python