<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
function ShowImage(path, id) {
//思路:
//1.当上传控件路径变化时, 先将图片所在div隐藏;
//2.将上传控件的值传给图片div的滤镜路径;
//3.将图片div的sizingMethod设置为'image'——目的是取得图片的原始大小。因为此状态下与图片的原始大小是一致的。
//4.过一小会儿获取div的宽高——之所以要过一会儿, 原因是图片显示出来需要时间。
var picid = document.getElementById(id);
picid.style.visibility = "hidden"; //处理前是原图,先将其隐藏,
picid.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = path;
picid.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "image";
setTimeout(function () { setImg(picid); }, 100); //过一小会获取div的宽高.
}
function setImg(obj) {
//5.如果取得的图片比预定义的宽高小, 原图显示就好了。
//6.否则如果图片太大, 将图片的sizingMethod改成"scale", 这样图片可以缩放的形式显示;
//7.宽比例=预定义宽/实际宽, 高比例=预定义高/实际高;
//8.取其中一个较小的作为显示时的显示比例;
//9.计算得到显示时的实际宽高, 并赋给图片div对应的属性;
var width_img;
var height_img;
obj.style.visibility = "visible";
width_img=obj.offsetWidth;
height_img=obj.offsetHeight;
var width=274; //预定义宽
var height=100; //预定义高
var ratW; //宽的缩小比例
var ratH; //高的缩小比例
var rat; //实际使用的缩小比例
if(width_img<=width && height_img<=height)
{
//如果比预定义的宽高小,原图显示。
obj.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod ="image";
return;
}else{
//如果大的话,要把 sizingMethod改成scale 如果属性是image, 不管怎么改div的宽高,都不起作用
obj.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod ="scale";
}
ratH=height/height_img;
ratW=width/width_img;
if(ratH<ratW) //选择最小的作为实际的缩小比例
rat=ratH;
else
rat=ratW;
width_img=width_img * rat;
height_img=height_img * rat;
obj.style.width=width_img;
obj.style.height=height_img;
}
</script>
</head>
<body>
<h2>切记:</h2>
<ol>
<li>此法只在IE下有效, 请在IE下测试</li>
<li>IE下, 必须设置"工具","Internet选项",选项卡"安全"——"可信站点",将你测试的站点添加进去才行.否则会出"系统找不到指定的资源"的 (特别是ie8, 很多人localhost测试没有问题, 上传到服务器有问题就是因为服务器没有添加为信任站点) .</li>
</ol>
<input type="file" name="pic1" size="10" onchange="ShowImage(this.value,'showpic1')" />
<div id="showpic1" style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);width: 274px; height: 100px">
</div>
</body>
</html>