图片仅提供一个路径,如:http://localhost:8080/hldjk/img/testImg/a3.JPG
这张图片我要先求得它的长、宽,再根据我的要求(比例)来计算我将要显示的小。
之前的实现方案(有点问题):
<script language="JavaScript">
function widHeight() {
var myImage = new Image();
myImage.src = "http://localhost:8080/hldjk/img/testImg/a3.JPG";
alert("myImage.width" + myImage.width);
alert(myImage.height);
}
</script>
<body>
<a href="#" onClick="widHeight()">Width</a>
<img src="http://localhost:8080/hldjk/img/testImg/a3.JPG" style="display:'none'">
</body> 现在的问题是:alert("myImage.width" + myImage.width); 总显示为0;
这张图片第一次调用的时候者是0,以后调用都不会是0。为什么会存在这样的问题?这个问题怎么解决呢?
Image是个什么对象?
如果用java 来读取这个文件长、宽是否可行?
这张图片我要先求得它的长、宽,再根据我的要求(比例)来计算我将要显示的小。
之前的实现方案(有点问题):
<script language="JavaScript">
function widHeight() {
var myImage = new Image();
myImage.src = "http://localhost:8080/hldjk/img/testImg/a3.JPG";
alert("myImage.width" + myImage.width);
alert(myImage.height);
}
</script>
<body>
<a href="#" onClick="widHeight()">Width</a>
<img src="http://localhost:8080/hldjk/img/testImg/a3.JPG" style="display:'none'">
</body> 现在的问题是:alert("myImage.width" + myImage.width); 总显示为0;
这张图片第一次调用的时候者是0,以后调用都不会是0。为什么会存在这样的问题?这个问题怎么解决呢?
Image是个什么对象?
如果用java 来读取这个文件长、宽是否可行?
<%@page language="java" contentType="text/html;charset=gb2312" %>
<%@ page import="javax.imageio.ImageIO " %>
<%@ page import="javax.awt.Image" %>
<html>
<head>
</head>
<body>
<%
Image img = ImageIO.read(图片路径);
int width=img.getWidth();
int height=img.getHeight();
%>
</body>
</html>
<%@page language="java" contentType="text/html;charset=gb2312" %>
<%@ page import="javax.imageio.ImageIO " %>
<%@ page import="javax.awt.Image" %>
<html>
<head>
</head>
<body><%
Image img = ImageIO.read("http://localhost:8080/hldjk/img/testImg/a3.JPG");
int width=img.getWidth();
int height=img.getHeight();
%>
a href="#" onClick="widHeight()">Width</a>
<img src="http://localhost:8080/hldjk/img/testImg/a3.JPG" style="display:'none'">
</body>
<script>
function widHeight() {
var width='<%=width%>';
var height='<%=height%>';
alert(width);
alert(height);}
</script>
</html>
我觉得你这方法可行,用你的代码在IE6及火狐下测试都是可以的,最初的0是由于本地还无那个图片alert("myImage.width" + myImage.width);这个会触发它去服务器下载那个图片,以后本地有缓存了直接有那个图片了所以不会出现0,但你通过<img src="http://localhost:8080/hldjk/img/testImg/a3.JPG" style="display:'none'">这个间接加载了,应该没问题
后面暂停5毫秒就可以了。pause(5);.......function pause(numberMillis) {
var dialogScript =
'window.setTimeout(' +
' function () { window.close(); }, ' + numberMillis + ');';
var result = window.showModalDialog(
'javascript:document.writeln(' +
'"<script>' + dialogScript + '<' + '/script>")');
}
我想是因为myImage.src = "http://localhost:8080/hldjk/img/testImg/a3.JPG"; 这个语句会触发后台下载图片,而执行alert("myImage.width" + myImage.width);alert(myImage.height);时可能图片还没下载完成造成显示宽度和高度为0。你可以控制让图片下载完成再显示宽度和高度嘛,只要在myImage.src前加myImage.onload=function(){alert("myImage.width" + myImage.width); alert(myImage.height);};
哪怕是alert('kkkkk');
然后再alert("myImage.width" + myImage.width);//这里也是因为前面alert('kkkkk');所以不会是0var myImage = new Image(); //这个东西不好用,API里面就这点东西,看也看不懂:
The following is the minimum code needed to produce an image. <v:image
src="..\art\zip.gif"
style="position:relative;top:1;left:1;width:50;height:50">
</v:image>
最开始的时候都是0,0
以后测试的都是28,30非常的法克。
说中了核心,问题得以解决。
myImage.onload=function(){
//在此处理所以剩下的业务
}