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 相关文章推荐
爆炸式的JS圆形浮动菜单特效代码
Mar 03 Javascript
js流动式效果显示当前系统时间
May 16 Javascript
js中Number数字数值运算后值不对的解决方法
Feb 28 Javascript
canvas简单快速的实现知乎登录页背景效果
May 08 Javascript
Vue-Cli中自定义过滤器的实现代码
Aug 12 Javascript
JS闭包的几种常见形式实例详解
Sep 16 Javascript
nuxt+axios解决前后端分离SSR的示例代码
Oct 24 Javascript
纯js封装的ajax功能函数与用法示例
May 14 Javascript
JS 实现微信扫一扫功能
Sep 14 Javascript
ES5新增数组的实现方法
May 12 Javascript
vue递归获取父元素的元素实例
Aug 07 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
Nov 05 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相关资料
2006/10/09 PHP
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
ES6基础之默认参数值
2019/02/21 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
Python 类的继承实例详解
2017/03/25 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
Python发展史及网络爬虫
2019/06/19 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
介绍一下write命令
2012/09/24 面试题
老总助理工作岗位职责
2014/02/06 职场文书
小学中秋节活动方案
2014/02/06 职场文书
新教师培训方案
2014/06/08 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
小型婚礼主持词
2015/06/30 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
MongoDB数据库的安装步骤
2021/06/18 MongoDB
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏