Javascript 可以访问本机图像大小吗?
我正在编写一个 jQuery 函数,我想在其中访问图像的本机大小以及页面上为其指定的大小。 我想为每个设置一个变量。
这是怎么做到的?
I'm writing a jQuery function where I'd like to access both the native size of an image, and the size specified for it on the page. I'd like to set a variable for each.
How is that done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
现代浏览器
当我在 2009 年写下这个答案时,浏览器环境已经大不相同。 如今,任何相当现代的浏览器都支持使用
img.naturalWidth
和img.naturalHeight<的 Pim Jager 的建议 /代码>。 看看他的回答。
旧版答案与超旧浏览器兼容
Modern browsers
When I wrote this answer back in 2009 the browser landscape was much different. Nowadays any reasonably modern browser supports Pim Jager's suggestion using
img.naturalWidth
andimg.naturalHeight
. Have a look at his answer.Legacy answer compatible with super old browsers
这应该有效:
naturalWidth 和naturalHeight 返回图像响应的大小,而不是显示大小。
根据 Josh 的评论,这不支持跨浏览器,这可能是正确的,我在 FF3 中测试了这一点
This should work:
The naturalWidth and naturalHeight return the size of the image response, not the display size.
According to Josh' comment this is not supported cross browser, this might be correct, I tested this in FF3
编辑 - 新想法...参见http://jsbin.com/uzoza
原始答案
请参阅如何获取图像大小(高度和宽度)使用 JavaScript?
EDIT - new idea... see http://jsbin.com/uzoza
ORIGINAL ANSWER
see How to get image size (height & width) using JavaScript?
我正在添加一种方法来完成此任务,并确保所有浏览器都支持。 几乎所有浏览器都支持
naturalWidth
和naturalHeight
(Internet Explorer 8 及更低版本除外)。由于 IE 8 及更低版本在尝试检索尺寸值时会返回可见图像的尺寸而不是自然尺寸,因此需要一个小的解决方法来获取来自 杰克·摩尔的示例。
我将其设置为支持传递图像 ID 值或 ID 名称。
用法:
或者
请确保在调用此函数之前确保图像已加载,无论是使用 onload 还是在将其添加到 DOM 时触发。
测试用:
Windows XP - 火狐 1.5、IE 8
Windows 7 - IE 9、Chrome 56
安卓 6.0.1 - Chrome 50
Android 5.1.1 - Opera Mini 7.6、Dolphin 10.3
完整代码示例:
I'm adding a way to accomplish this and be sure that there is support for all browsers. Pretty much all browsers support
naturalWidth
andnaturalHeight
except for Internet Explorer 8 and below.Since IE 8 and below would return the size of the visible image and not the natural size when using trying to retrieve size values, a small workaround is needed to get the full size dimensions which came from an example by Jack Moore.
I set this up to support passing either the image ID value or the name of the ID.
Usage:
Or
Be sure to make sure the image is loaded before calling this, whether by using onload or triggering upon adding it to the DOM.
Tested with:
Windows XP - Firefox 1.5, IE 8
Windows 7 - IE 9, Chrome 56
Android 6.0.1 - Chrome 50
Android 5.1.1 - Opera Mini 7.6, Dolphin 10.3
Full code example:
我的解决方案是编写一个 Web 服务来获取/下载图像,然后获取其分辨率并将其返回为 {width: x,height:y}。 然后您可以使用 $.ajax 或等效项来调用它来检索它。
或者,您可以使用将图像添加到隐藏的 div
,然后获取 div 的宽度/高度,尽管我还没有尝试过。
My solution would be to write a web service that gets/downloads the image, and then gets its resolution and returns it as {width: x,height:y}. Then you call it with $.ajax or equivalent to retrieve this.
Alternatively you could add the image to a hidden div using
And then get the div's width/height though I haven't tried it.