js如何获取图片的尺寸?

JavaScript012

js如何获取图片的尺寸?,第1张

项目的需求是上传一张图片,然后验证该图片的尺寸,如果跟预期的不符,就不给上传

首先,可以通过new FileReader(),再通过将上传的图片文件传给实例的readAsDataUrl(),当文件加载完成触发onload事件,传递event,通过event.target.result来获取图片的链接(base64格式的)

接着,new Image()实例,将上面获取的链接设置为图片的src属性,当图片加载完成触发onload事件就可以通过width、height属性来读取图片的长宽啦~~

 <input id="file_Up" name="file_Up" type="file" onchange="getFileSize(this.value)"/>

<input id="sub_Import" type="submit" value="导入" />

js中function getFileSize() {

    var btnsave = document.getElementById("sub_Import") 

    btnsave.disabled = true 

    var filepath = ""

    var fileupload = document.getElementById("file_Up")

    if (fileupload.value.length < 5) {

        alert('请选择文件!')

        return

    }

    var agent = window.navigator.userAgent

    if (agent.indexOf("Firefox") >= 1) {

        var maxsize = 4 * 1024 * 1024

        var size = fileupload.files[0].size

        if (size > parseInt(maxsize)) {

            alert("文件超过大小!")

            return false

        }

        else {

            btnsave.disabled = false

            return true

        }

    }

    else {

        fileupload.select()

        fileupload.blur()

        filepath = document.selection.createRange().text

        try {

            var fso, f, fname, fsize

            var flength = 4 * 1024 //设置上传的文件最大值(单位:kb),超过此值则不上传。 

            fso = new ActiveXObject("Scripting.FileSystemObject")

            f = fso.GetFile(filepath) //文件的物理路径

            fname = fso.GetFileName(filepath) //文件名(包括扩展名)

            fsize = f.Size //文件大小(bit)

            fsize = fsize / 1024

            //去掉注释,可以测试

            alert("文件路径:" + f)

            alert("文件名:" + fname)

            alert("文件大小:" + fsize + "kb")

            if (fsize > flength) {

                alert("上传的文件到小为:" + fsize + "kb,\n超过最大限度" + flength + "kb,不允许上传 ")

                return false

            }

            else {

                btnsave.disabled = false 

                return true

            }

        } catch (e) {

            alert(e + "\n 跳出此消息框,是由于你的activex控件没有设置好,\n" +

"你可以在浏览器菜单栏上依次选择\n" +

"工具->internet选项->\"安全\"选项卡->自定义级别,\n" +

"打开\"安全设置\"对话框,把\"对没有标记为安全的\n" +

"ActiveX控件进行初始化和脚本运行\",改为\"启动\"即可")

            return false

        }

    }

}

//获取盒子的内容高度,内容高度也可用用box.clientHeight获取,内容高度不包括边框和外边距和滚动条

var box = document.getElementById("box")

var contentHeight = window.getComputedStyle(box).height //输出 '60px'

//js获取移动端屏幕高度和宽度等设备尺寸,兼容性比较好的方法

document.documentElement.clientWidth

document.documentElement.clientHeight

此外,还可以使用元素的点击事件来获取元素高度等内容。