在处理网页图片时,特别是一些图片列表的应用里面,很难保证图片统一大小,直接设置图片大小又会导致图片拉伸,造成图片模糊,本文介绍的代码可以在图片加载完成后自动按比例调整图片大小。    
Javascript:    <script language="javascript" type="text/javascript">
    <!--
    // 说明:用 JavaScript 实现网页图片等比例缩放
    function DrawImage(ImgD,FitWidth,FitHeight)
    {
    var image=new Image();
    image.src=ImgD.src;
    if(image.width>0 && image.height>0)
    {
    if(image.width/image.height>= FitWidth/FitHeight)
    {
    if(image.width>FitWidth)
    {
    ImgD.width=FitWidth;
    ImgD.height=(image.height*FitWidth)/image.width;
    }
    else
    {
    ImgD.width=image.width;
    ImgD.height=image.height;
    }
    }
    else
    {
    if(image.height>FitHeight)
    {
    ImgD.height=FitHeight;
    ImgD.width=(image.width*FitHeight)/image.height;
    }
    else
    {
    ImgD.width=image.width;
    ImgD.height=image.height;
    }
    }
    }
    }
    //-->
    <script> 
    调用方式:    <ccid_file values="1148202890" alt="自动缩放后的效果" onload="javascript:DrawImage(this,200,200);" / />    如果图片较大,建议在图片标签里面同时设置期望的图片大小,这样不会导致页面在加载中撑开,该大小不会影响最终缩放效果。可以修改上面的代码为:    <ccid_file values="1148202890" alt="自动缩放后的效果" width="200" height="200" onload="javascript:DrawImage(this,200,200);" / />

解决方案 »

  1.   

    你这个有问题,如果网络速度很慢,是取不到图片尺寸的image.width,image.height会等于0,(本机测试可以试试加载个大图),取image.width,image.height前需要判断图片是否加载完成。
      

  2.   

    二楼的说的情况应该不会出现吧,因为没有加载完,它不会去执行onload这个事件的函数吧。
      

  3.   

    现在看来应该用CSS的max-width和max-height更好
      

  4.   

    firefox没有onload事件看一个老贴的6楼
    http://topic.csdn.net/t/20041126/15/3591412.html
    onload事件不能保证是在加载玩图片执行。