javascript代码实例教程-JavaScript获取图片的原始尺寸

发布时间:2019-02-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JavaScript获取图片的原始尺寸脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 页面里的img元素,想要获取它的原始尺寸,以为例可能首先想到的就是width,如下

 

 

<img src=/uploaDFile/2014/0504/20140504093017977.jpg">

<script>

    VAR img = document.getelementsbytagname(&#39;img')[0]

    var width = getWH(img, 'width') // 690

</script>

这里使用的getWH方法是之前文章里提到的。这时候获取的宽度和图片的原始尺寸是一样的。

 

 

 

如果给img加上了width属性,这种方式就不行了,比如图片实际宽度是690,设置了width为400,这时按上面的方式获取则返回400

 

 

<img width="400" src=/uploadfile/2014/0504/20140504093017977.jpg">

<script>

    var img = document.getElementsByTagName('img')[0]

    var width = getWH(img, 'width') // 400

</script>

很明显,400不是图片的原始宽度。

 

 

 

有一种方式可以获取到,直接创建一个新img对象,然后把旧img的src赋值给新的,这时候获取新img的宽度即可

 

<img width="400" src=/uploadfile/2014/0504/20140504093017977.jpg">

<script>

function getNaturalWidth(img) {

    var image = new Image()

    image.src = img.src

    var naturalWidth = image.width

    return naturalWidth

}

var img = document.getElementsByTagName('img')[0]

getNaturalWidth(img) // 690

</script>

需要注意的是,这里新创建的image是不需要添加的DOM文档里的。

 

 

 

HTML5提供了一个新属性naturalWidth/naturalHeight可以直接获取图片的原始宽高。这两个属性在Firefox/Chrome/Safari/opera及IE9里已经实现。改造下获取图片尺寸的方法。

 

 

function getImgNaturalDimensions(img, callback) {

    var nWidth, nHeight

    if (img.naturalWidth) { // 现代浏览器

        nWidth = img.naturalWidth

        nHeight = img.naturalHeight

    } else { // IE6/7/8

        var imgae = new Image()

        image.src = img.src

        image.onload = function() {

            callback(image.width, image.height)

        }

    }

    return [nWidth, nHeight]

}

注意IE6/7/8的处理,创建了一个新的img,仅设置其src,这时需要让图片完全载入后才可以获取其宽高。因此这里是异步的,可以传一个回调,回调里把原始的宽高作为参数传入。

 

 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-JavaScript获取图片的原始尺寸全部内容,希望文章能够帮你解决javascript代码实例教程-JavaScript获取图片的原始尺寸所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。