按页面比例缩放图片

admin 2017-5-17 3641


原理是在页面载入完成后(onload触发)在客户端使用Javascript读取每张图片的大小并进行缩放。

//将imageDest图片的大小按比例缩放,适合显示在宽W和高H的区域内 
function ResizeImage(imageDest, W, H) 
{ 
//显示框宽度W,高度H 
var image = new Image(); 
image.src = imageDest.src; 
if(image.width>0 && image.height>0) 
{ 
    //比较纵横比 
    if(image.width/image.height >= W/H)//相对显示框:宽>高 
    { 
     if(image.width > W) //宽度大于显示框宽度W,应压缩高度 
     { 
               imageDest.width = W; 
               imageDest.height = (image.height*W)/image.width;   
              } 
     else //宽度少于或等于显示框宽度W,图片完全显示 
     { 
               imageDest.width = image.width;       
               imageDest.height = image.height;   
              } 
    } 
    else//同理 
    { 
     if(image.height > H) 
     { 
               imageDest.height = H; 
               imageDest.width = (image.width*H)/image.height; 
              } 
     else 
     { 
               imageDest.width = image.width; 
               imageDest.height = image.height; 
              } 
    } 
} 
}

以上函数对图片进行缩放。 

golf网站的每张缩略图的id都设为imgProductItem,如:<img class="lazy" data-original="<%= imgPath %>"    name="imgProductItem" width="150" height="113" border="0" id="imgProductItem" />,里面的150x113就是显示框的最大尺寸,因为处理函数必须在onload完成时运行,所以这里必须设置一定的大小,要不整个页面在载入图片过程中出现排版错乱,到运行了RsizeAllImageById才恢复正常。 

添加一个批量操作的函数

//将页面内所有指定id的图片按比例缩放 
function RsizeAllImageById(id, W, H) 
{ 
var imgs = document.getElementsByTagName("img"); 
for(var i=0; i<imgs.length; i++) 
{ 
   if(imgs[i].id == id) 
   { 
    ResizeImage(imgs[i], W, H); 
   } 
} 
}

这样在页面的body添加:<body  >;在head区添加:

<script language="javascript"> 
<!-- 
function init() 
{ 
RsizeAllImageById("imgProductItem", 150, 113); 
} 
--> 
</script>

就可以将所有图片显示成缩略图了。

最新回复 [0]
返回