posts - 0, comments - 77, trackbacks - 0, articles - 356
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
<html>
<head>
<title>兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现</title>
<meta http-equie="keywords" content="兼容ie,firefox,netscape,等比例图片,javascript">
<script type="text/javascript">
/*
 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现
 author:semovy@gmail.com
 date:14:39 上午 2007-10-9
 @param:targetImg string id 待显示等比例调整过的目标元素的id字符串
 @param:imgSrc string src 等处理的图片源路径字符串
 @param:fitWidth int 等显示图片的最大宽度
 @param:fitHeight int 等显示图片的最大高度
*/
function resizeImage(targetImg,imgSrc,fitWidth,fitHeight)
{
 var imgSrc = "file:///" + imgSrc.replace(/\\/g,"/");//本地路径c:\a.jpg,而ff,ns不支持,所以替换成file:///c:/a.jpg这种形式
 var img = document.getElementById(targetImg);//获取目标图片元素容器
 var tempImg = new Image();//建立临时图片对象
 tempImg.src = imgSrc;//给临时图片对象赋予图片源
 var scale=1.0;//图片度高比例因子.
 var width=0,height=0;
 
 /*firefox实现了complete属性,而ie实现了complete属性和readyState属性
 但是两者对属性的定义好像不同:
 firefox: 一个图像被下载完毕,complete属性就是true,没有下载完毕则为false
 ie:一个图像没有被下载完毕,则readyState属性为uninitialized,complete属性是false.当下载完毕时,
 readyState为complete,而如果此时图片还没有显示,complete为false,显示以后(display:block)此属性才变成true
 */
 
 if(document.all)//如果是ie
 {
  if(tempImg.readyState=='complete')
  {
   width = tempImg.width;//获取源图片宽,高
   height = tempImg.height;
  }
 }
 else(tempImg.complete)//fire fox ,netscape
 {
  width = tempImg.width;
  height = tempImg.height;
 }
 scale = width/height;//宽度比例因子
 if(width > fitWidth)//等比例调整
 {
  width = fitWidth;
  height = width/scale; 
  if(height > fitHeight)
  {
   height = fitHeight;
   width = height*scale;
  }
 }
 if(height > fitHeight)
 {
  height = fitHeight;
  width = height*scale;
 }
 img.width = width;//调整后的宽,高
 img.height = height;
 img.src = imgSrc;
 img.style.display="";//显示图片
}
</script>
</head>
<body>
<!--目标显示图片组件,初始化为隐藏格式-->
<img id="img" style="display:none">
<input type="file" id="imgFile" onchange="resizeImage('img',this.value,150,150)">
</body>
</html>

评论

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现  回复  更多评论   

2007-11-15 11:28 by 杜联
hello
为什么我用 inp="file:///" + inp.replace(/\\/g,"/");
var example=new Image();
example.src=inp;
if(example.complete){
alert(example.height);


注:inp为图片路径

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现[未登录]  回复  更多评论   

2007-11-21 11:33 by kevin
需要修改FF的安全策略吗?

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现  回复  更多评论   

2007-11-28 00:14 by psdshow
经测试ff 2.0.0.9 下无效

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现  回复  更多评论   

2008-03-10 16:05 by re
经测试无效

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现  回复  更多评论   

2008-05-25 04:30 by yangedie
测试无效阿,那算了

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现  回复  更多评论   

2008-07-10 10:45 by keyfan
Firefox 下不行啊。

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现  回复  更多评论   

2008-08-29 11:42 by 特斯塔
测试无效!

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现  回复  更多评论   

2008-10-11 16:44 by 程序员
未经测试,无效!

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现  回复  更多评论   

2008-11-05 15:50 by ~
FF安全机制 限制了本地文件的预览。 放在C盘的静态页面除外。。呵呵

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现[未登录]  回复  更多评论   

2009-12-04 11:34 by 森林
Firefox下无效,IE下第一次显示,以后的都不行了。

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现  回复  更多评论   

2009-12-28 13:36 by 冰凉
Firefox下无效,IE下第一次显示,以后的都不行了。

# re: 兼容于ie,firefox,netscape的等比例图片本地预览的javascript实现[未登录]  回复  更多评论   

2010-01-24 04:12 by cc
http://www.cnblogs.com/cloudgamer/archive/2009/12/22/ImagePreview.html
这个图片预览兼容ie和ff

只有注册用户登录后才能发表评论。


网站导航: