用Javascript检测图像方向
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用Javascript检测图像方向,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1799字,纯文字阅读大概需要3分钟。
内容图文
我试图找到一种方法来检测图像的方向(横向或纵向).
HTML仅包含一些已填充源的img标签.该脚本随后应检测方向并将图像添加到作为缩略图的动态创建的div中.
我一直在使用的脚本是这个(在这里的某个地方找到它)
for (i = 0; i < pics.length; i++) {
pics[i].addEventListener("load", function() {
if (this.naturalHeight > this.naturalWidth) {
this.classList.add("portrait")
} else {
this.classList.add("landscape")
}
})
}
现在,通常在首次加载页面时可以正常工作.但是,刷新时,它的行为不正常,将正确的类添加到某些图像,而根本不添加任何类.
我也试过了
for (i = 0; i < pics.length; i++) {
var img = pics[i];
var width = img.naturalWidth;
var height = img.naturalHeight;
if (height > width) {
img.classList.add("portrait")
} else {
img.classList.add("landscape")
}
}
这也无法预测.所有图像都添加了一个类别,但是有些图像却添加了错误的类别.
我猜测问题可能出在脚本运行之前未完全加载图像,因此脚本无法正确测量它们,但我不确定.无论如何,我也不知道该如何解决.
为了给出我要做什么的想法,下面是指向页面的链接:
http://pieterwouters.tumblr.com/
任何想法表示赞赏.
解决方法:
如果在调用pic.addEventListener(“ load”,…)时已经加载了图像,则不会触发加载事件处理程序.如果pic.complete为true,则应调用它,如this answer中所建议.
var pics = document.querySelectorAll("img");
var pic;
for (i = 0; i < pics.length; i++) {
pic = pics[i];
if (pic.complete) {
// The image is already loaded, call handler
checkImage(pic);
} else {
// The image is not loaded yet, set load event handler
pic.addEventListener("load", function() {
checkImage(this);
})
}
}
function checkImage(img) {
if (img.naturalHeight > img.naturalWidth) {
img.classList.add("portrait")
} else {
img.classList.add("landscape")
}
}
img {
border: 1px solid;
}
.landscape {
border-color: red;
}
.portrait {
border-color: blue;
}
<img src="//placehold.it/50x100">
<img src="//placehold.it/200x100">
感谢Ricky.我从他的答案中借用了图像链接和样式属性.
内容总结
以上是互联网集市为您收集整理的用Javascript检测图像方向全部内容,希望文章能够帮你解决用Javascript检测图像方向所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。