jQuery获取intput file图片的宽高

如何判断input file表单里上传的图片的宽高呢?这个时候图片还没真正上传,也不是在页面上展示,不能使用$(“id”).width()这种方式。

在Stack Overflow找到一个方法:

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});
            };
            img.src = _URL.createObjectURL(file);
        }
    });
}
这里使用了一个回调方法。

在jQuery中使用:

(function () {
   getImageWidthAndHeight('image_file', function (obj) {
     if (obj.width != 843 || obj.height != 1038) {
        $.messager.alert('操作提示', result.data.msg, '弹窗图片宽高必须是843*1038px');
     }
   });
})(jQuery)

这样就OK了。

例子,

部分html代码

<div id="upload">
    <form action="{:U('Index/uploadhandler')}" enctype="multipart/form-data" method="post" id="imgform">   
            <div id="imglist">

            </div>
            <div id="updiv">
            <input type='file'  name='photos' class="upfile">
            </div>             
            <input type="submit" value="提交">
    </form>
</div>

jq代码

$(function(){
        var imgurl=[];
        function createfile(){
        $('#updiv').append("<input type='file'  name='photos' class='upfile'>");
        }
        function showimg(url){
            var img='<img src="'+url+'"/>';
            $('#imglist').append(img);
        }
        function addfile(){
            showimg($(this).val());
            $(this).hide();
            createfile();
            $('.upfile').bind('change',addfile);
        }
        $('.upfile').bind('change',addfile);
    })

js简陋的获取图片方式

// 图片地址 后面加时间戳是为了避免缓存
var img_url = 'yun_qi_img/13643608813441.jpg?'+Date.parse(new Date());
 
// 创建对象
var img = new Image();
 
// 改变图片的src
img.src = img_url;
 
// 打印
alert('width:'+img.width+',height:'+img.height);

返回为0,0

例子,onload后在打印

// 图片地址 后面加时间戳是为了避免缓存
var img_url = '/upload/2013/13643608813441.jpg?'+Date.parse(new Date());
 
// 创建对象
var img = new Image();
 
// 改变图片的src
img.src = img_url;
 
// 加载完成执行
img.onload = function(){
    // 打印
    alert('width:'+img.width+',height:'+img.height);
};

返回有参数

通过complete与onload一起混合使用

为了测试缓存效果,注意以下测试图片的url都不加时间戳

// 图片地址
var img_url = 'static/upload/2013/13643608813441.jpg';
 
// 创建对象
var img = new Image();
 
// 改变图片的src
img.src = img_url;
 
// 判断是否有缓存
if(img.complete){
    // 打印
    alert('from:complete : width:'+img.width+',height:'+img.height);
}else{
    // 加载完成执行
    img.onload = function(){
        // 打印
        alert('from:onload : width:'+img.width+',height:'+img.height);
    };
}

时间: 2024-09-14 06:50:58

jQuery获取intput file图片的宽高的相关文章

通过JQuery获取窗口和元素的宽高

<script type="text/javascript"> $(document).ready(function()                  { alert($(window).height()); //浏览器当前窗口可视区域高度 alert($(document).height()); //浏览器当前窗口文档的高度 alert($(document.body).height());//浏览器当前窗口文档body的高度 alert($(document.bod

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

问题 如何判断input file表单里上传的图片的宽高和大小呢? 解决方案 这个时候图片还没真正上传,也不是在页面上展示,不能使用$("#id").width(),$("#id").height()这种方式. 在Stack Overflow找到一个方法获取input file图片文件的宽高: var _URL = window.URL || window.webkitURL; $("#file").change(function (e) { v

js判断图片加载完成后获取图片实际宽高的方法_javascript技巧

本文实例讲述了js判断图片加载完成后获取图片实际宽高的方法.分享给大家供大家参考,具体如下: 通常,我们会用jq的.width()/.height()方法获取图片的宽度/高度或者用js的.offsetwidth/.offsetheight方法来获取图片的宽度/高度,但这些方法在我们通过样式设置了图片的宽高后获取的就不是图片的实际宽高,这显然在有些时候不是我们想要的结果,那么有没有一种方法来获取这样的实际宽高呢?答案是有的.下面的代码就能解决这样的问题: <img src="01.jpg&q

JS获取图片实际宽高及根据图片大小进行自适应_javascript技巧

JS获取图片实际宽高,以及根据图片大小进行自适应 复制代码 代码如下: <img src=https://yunqi-tech.oss-cn-hangzhou.aliyuncs.com/xxx.jpg id="imgs" onload="adapt();"/> 复制代码 代码如下: function adapt(){ var tableWidth = $("#imgTable").width(); //表格宽度 var img = n

Js获取图片原始宽高的实现代码_javascript技巧

如果我们页面看到的图片都是缩略图,那就需要做个图片点击放大效果,那么怎样获取图片的原始宽高呢?方法如下: //获取图片原始宽度 function getNaturalWidthAndHeight(img) { var image = new Image(); image.src = img.src; return [image.width,image.height]; } //点击缩略图弹出层,显示原始图片. //获取class为tz_main_box下的所有p标签下的图片img $(".tz_

JavaScript获取窗口可视区域的宽高的例子

在jQuery中我们很容易就可以获取整个浏览器窗口可视区域的宽高:  代码如下 复制代码 alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(document.body).height());//浏览器时下窗口文档body的高度 alert($(document.body).outerHeight(true));//浏览器时下窗口文档body的总高度 包括bo

把ckeditor上传完图片后宽高固定成100%,在哪里修改,哪位大神帮帮忙?

问题描述 把ckeditor上传完图片后宽高固定成100%,在哪里修改,哪位大神帮帮忙? 解决方案 修改CKEditorpluginsimagedialogsimage.js这个文件,找到下面2句,替换为下面的 C.setValueOf('info''txtWidth'D.$.width)C.setValueOf('info''txtHeight'D.$.height)=======>C.setValueOf('info''txtWidth''100%')C.setValueOf('info''

imageview-ImageView放入图片后宽高变化

问题描述 ImageView放入图片后宽高变化 屏幕尺寸1920*1080,图片尺寸也是1920*1080,图片放入一个ImageView中然后获得的ImageView的却是1845*1080,而且宽度虽然一直却两边都有留白,请教这到底是为什么? 解决方案 不知道你的ImageView是怎么申明的.不过可以用LayoutParams改变ImageView的宽高 ImageView imageView = new ImageView(this); int width = ...;//px单位 in

php缩放图片(根据宽高的等比例缩放)实例介绍_php技巧

推荐一个简单实用的缩放图片工具 SimpleImage,参考http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/ 使用方法: 设定宽高,不等比例缩放 复制代码 代码如下: <?php include('SimpleImage.php'); $image = new SimpleImage(); $image->load('picture.jpg'); $image->resize(250,400); $i