在Web上显示图片,通常都会有图片显示比例问题,如果不给<img />限制width和height,那么如果图片大了就会将整个页面挤乱,图片小了又会使图片失真。
我的需求如下:
1、预先定义好图片显示的标准宽度和高度。
2、如果图片的大小超过了标准定义,那么等比例压缩图片。
3、如果图片的大小等于标准定义,那么按照标准宽度和高度显示图片。
4、如果图片的大小小于标准定义,那么不对图片进行任何压缩处理。
可能是我搜索的关键字不对吧,在网上找了很长时间,才找到,感觉很好使。
代码如下
<script language="JavaScript">
<!--
//图片按比例缩放
var flag=false;
function DrawImage(ImgD,iwidth,iheight){
//参数(图片,允许的宽度,允许的高度)
var image=new Image();
image.src=ImgD.src;
if(image.width>0 && image.height>0){
flag=true;
if(image.width/image.height>= iwidth/iheight){
if(image.width>iwidth){
ImgD.width=iwidth;
ImgD.height=(image.height*iwidth)/image.width;
}else{
ImgD.width=image.width;
ImgD.height=image.height;
}
ImgD.alt=image.width+"×"+image.height;
}
else{
if(image.height>iheight){
ImgD.height=iheight;
ImgD.width=(image.width*iheight)/image.height;
}else{
ImgD.width=image.width;
ImgD.height=image.height;
}
ImgD.alt=image.width+"×"+image.height;
}
}
}
//-->
</script>
调用:<img src="images/toplogo.gif" οnlοad="javascript:DrawImage(this,100,100)">
另一种写法:
<SCRIPT LANGUAGE="JavaScript">
<!--
function setImg(img, width, height)
{
var s1 = width/height;
var s2 = img.offsetWidth/img.offsetHeight;
if(s1>s2) img.height = img.offsetHeight>height ? height : img.offsetHeight;
else img.width = img.offsetWidth>width ? width : img.offsetWidth;
}
//-->
</SCRIPT>
<img border=0 src="http://community.csdn.net/images/CSDN_logo.GIF"
οnlοad="setImg(this, 100, 100)"><br>
<img border=0 src="http://community.csdn.net/images/CSDN_logo.GIF"
οnlοad="setImg(this, 50, 100)"><br>
<img border=0 src="http://community.csdn.net/images/CSDN_logo.GIF"
οnlοad="setImg(this, 80, 50)"><br>
<SCRIPT LANGUAGE="JavaScript">
//按比例缩放图片
<!--
function setImg(img,width,height){
//参数说明:img:图片对象;width:允许的最大宽度;height:允许的最大高度
var scale_w=img.width/width; //按宽度得到的缩放比例
var scale_h=img.height/height;//按高度得到的缩放比例
var scale=scale_w>scale_h?scale_w:scale_h;//得到缩放比例(取最大值)
img.width=img.width/scale;//缩放宽度
//img.height=img.height/scale; //这一句加上后高度会按比例缩小两次,奇怪,代码中前面未对高度作修改。
return false;
}
//-->
</SCRIPT>
<BODY οnlοad="javascript:setImg(bm1,200,200);">
<img src="aa.jpg" id="bm1" border="0"></img>