调整大小后,获取实际图像大小
Get actual image size, after resizing it
我有一个充满缩略图的页面,用css调整大小以150x150
,当我单击缩略图时,页面变暗,并且图像以真实大小显示。
目前,我必须手动创建一个包含所有图像实际高度的数组。为了解决设计问题+减少图库的手动操作,我需要在调整图像大小(CSS)后获取图像的实际高度。
我试过了:
var imageheight = document.getElementById(imageid).height;
和:
var imageheight = $('#' + imageid).height();
但两者都返回与 CSS 分配的 150px
属性。我该如何解决这个问题?谢谢
你有"自然"的kws来帮助你:
使用 JS:
var imageheight = document.getElementById(imageid).naturalHeight;
或使用 jquery
var imageheight = $('#' + imageid).naturalHeight;
一种方法是创建一个单独的图像对象。
function getImageDimensions(path,callback){
var img = new Image();
img.onload = function(){
callback({
width : img.width,
height : img.height
});
}
img.src = path;
}
getImageDimensions('image_src',function(data){
var img = data;
//img.width
//img.height
});
这样,您将使用相同的图像,但不会使用 DOM 上的图像,因为 DOM 上的图像已修改尺寸。据我所知,缓存的图像将使用此方法回收。因此,无需担心额外的HTTP请求。
@Dinesh只使用naturalHeight
和naturalWidth
属性的答案很棒,可能应该是公认的答案。
只是想在这里添加两件事,可以节省人们的时间,因为我看到许多关于这个问题的 SO 帖子,并且我自己花了很多时间。
-
如果在加载映像之前调用,
naturalHeight
可能会返回0
或undefined
。仅设置src
属性可能并不意味着立即加载图像。我已经看到最好在onload
中获取它.$('selector')[0].onload = function() { alert(this.naturalHeight); alert(this.naturalWidth); }
-
如果不使用
this
,只是$('selector').naturalHeight
可能不起作用。您可能需要访问关联的 DOM 元素,即$('selector')[0].naturalHeight
或$('selector').get(0).naturalHeight
,因为我们使用的是本机 Javascript 的属性naturalHeight
。有关更多详细信息,请参阅此SO帖子。
- 客户端图像调整大小.任何已知问题
- TinyMCE图像调整大小模式
- 将特定html文件上的幻灯片图像调整为移动屏幕
- 如何使用 jquery 和 css 在固定标题导航栏中将头像图像调整为较小的图像
- 在 JavaScript 中编辑 blob 图像(调整大小并添加边框)
- JavaScript图像调整大小窗口
- 多个图像调整大小并上传说明
- 将未知大小的图像调整为特定大小而不裁剪.(信箱)
- JQuery 图像调整器和文本操纵器
- 想要使用 html5 的画布优化捕获的图像调整大小和旋转的代码,现在在移动设备上发出内存不足警告
- 客户端图像调整大小并保存
- jQuery图像调整大小以适应模态的问题
- 获取将图像调整为其容器大小的脚本的名称+其他功能
- html5画布图像调整大小
- 当主图像调整大小时,使顶部图像保持原位
- Javascript将图像调整为不同的大小,其中只有宽度很重要
- 图像调整与javascript没有视觉干扰
- 图像调整大小NaN错误
- 将图像调整大小/拉伸到只有在页面加载后才知道的尺寸
- 在WebKit浏览器中,图像调整会产生轻微的、短暂的像素化