如何在上传前检查图像宽度和高度

时间:2014-10-17 15:48:29

标签: javascript jquery css

图片上传我写了以下HTML代码:

<input type="file" id="upload" class="im" onchange="fileSelectHandlerProfile('defaultProfile','true')" style="cursor:pointer"/>

当我们完成选择图像时,

此代码将被触发:

function fileSelectHandlerProfile(title, defalutProfile) {
    var oFile;
    oFile = $('#thumbUploadProfile')[0].files[0];
    var rFilter = /^(image\/jpeg|image\/png|image\/gif|image\/bmp|image\/jpg|image\/pjpeg)$/i;
    if (!rFilter.test(oFile.type)) {
        $('.errorProfile').html('Please select a valid image file (jpg and png are allowed)').show();
    }
}

我想检查oFile的宽度和高度,怎么可能像oFile.type一样?

4 个答案:

答案 0 :(得分:2)

解决方案是将其装入clienside并检查高度和宽度。

function fileSelectHandlerProfile(title, defalutProfile) {
var oFile;
oFile = $('#thumbUploadProfile')[0].files[0];
var rFilter = /^(image\/jpeg|image\/png|image\/gif|image\/bmp|image\/jpg|image\/pjpeg)$/i;
if (!rFilter.test(oFile.type)) {
    $('.errorProfile').html('Please select a valid image file (jpg and png are allowed)').show();
}

var picReader = new FileReader();

picReader.addEventListener("load", function (event) {

    var imageObj = new Image();
    imageObj.src = event.target.result;
    imageObj.onload = function () {
        //TEST IMAGE SIZE
        if (imageObj.height < 100 || imageObj.width < 100) {
            $('.errorProfile').html('Please select an image with correct dimensions').show();
        }
    };
});

//Read the image
picReader.readAsDataURL(oFile);

}

答案 1 :(得分:1)

您可以分两步完成:

  1. 使用html5文件api:
  2. 将图像文件内容读取为数据网址
    var reader  = new FileReader();
    reader.onloadend = function () {
        //var dataUrl = reader.result;
        //code as per step 2 here...
    }
    reader.readAsDataURL(oFile);
    
    //ref: https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsDataURL
    
    1. 现在通过创建Image对象并将dataUrl作为src来读取图像大小。

      详细信息:JS - get image width and height from the base64 code

答案 2 :(得分:1)

FileReader API允许您使用FileReader.readAsDataURL将文件作为data:网址阅读。将该网址用作src代码的<img />属性,并阅读该图片的widthheight属性。

答案 3 :(得分:1)

    var width;
    var height;
    var oFile;
    oFile = $('#thumbUploadProfile')[0].files[0];

    var reader = new FileReader();
    reader.onload = function(e){
        var image = new Image();
        image.onload  = function(){            
            width = img.width;
            height = img.height;
        }
        image.src   = e.target.result;
    };
    reader.readAsDataURL(oFile);