zoukankan      html  css  js  c++  java
  • (转)按比例缩放图片

    看到海东兄的按比例缩放图片 ,我就把我写的js版本的也拿出来show一下,哈哈!
    js版本:

    function resizeImage(obj, MaxW, MaxH)
    {
     var imageObject = obj;
        var state = imageObject.readyState;
     if(state!='complete')
     {
            setTimeout("resizeImage("+imageObject+","+MaxW+","+MaxH+")",50);
      return;
        }
        var oldImage = new Image();
        oldImage.src = imageObject.src;
        var dW = oldImage.width;
        var dH = oldImage.height;
        if(dW>MaxW || dH>MaxH)
     {
            a = dW/MaxW; b = dH/MaxH;
            if( b>a ) a = b;
            dW = dW/a; dH = dH/a;
        }
        if(dW > 0 && dH > 0)
     {
            imageObject.width = dW;
      imageObject.height = dH;
     }
    }

    使用很简单:<img src="../pic.jpg" onload='resizeImage(this,60,90)> 就OK了;同时也附上C#版本的

    C#版本---海东兄 http://www.cnblogs.com/ghd258/archive/2005/11/07/270447.html

    1/// <summary>
     2        /// 按比例缩放图片
     3        /// </summary>
     4        /// <param name="imgUrl">图片的路径</param>
     5        /// <param name="imgHeight">图片的高度</param>
     6        /// <param name="imgWidth">图片的宽度</param>
     7        /// <returns></returns>

     8        public static string GetImageSize(string imgUrl,int imgHeight,int imgWidth)
     9        {
    10            string fileName = System.Web.HttpContext.Current.Server.MapPath(imgUrl);
    11            string strResult = string.Empty;
    12            if(System.IO.File.Exists(fileName) && imgHeight != 0 && imgWidth != 0)
    13            {
    14                decimal desWidth;decimal desHeight;                                            //目标宽高
    15                System.Drawing.Image objImage = System.Drawing.Image.FromFile(fileName);
    16                decimal radioAct = (decimal)objImage.Width/(decimal)objImage.Height;        //原始图片的宽高比
    17                decimal radioLoc = (decimal)imgWidth/(decimal)imgHeight;                    //图片位的宽高比
    18                if(radioAct > radioLoc)                                                        //原始图片比图片位宽
    19                {        
    20                    decimal dcmZoom = (decimal)imgWidth/(decimal)objImage.Width;
    21                    desHeight = objImage.Height*dcmZoom;
    22                    desWidth = imgWidth;
    23                }

    24                else
    25                {
    26                    decimal dcmZoom = (decimal)imgHeight/(decimal)objImage.Height;
    27                    desWidth = objImage.Width*dcmZoom;
    28                    desHeight = imgHeight;
    29                }

    30                objImage.Dispose();                //释放资源
    31                strResult = "width=\"" + Convert.ToString((int)desWidth) + "\" height=\""
    32                    + Convert.ToString((int)desHeight) + "\" ";
    33            }

    34            return strResult;
    35        }







    <script language="javascript">
    function changeImg(mypic){
    var xw=160;
    var xl=180;

    var width = mypic.width;
    var height = mypic.height;
    var bili = width/height;

    var A=xw/width;
    var B=xl/height;

    if(!(A>1&&B>1))
    {
    if(A<B)
    {
    mypic.width=xw;
    mypic.height=xw/bili;
    }
    if(A>B)
    {
    mypic.width=xl*bili;
    mypic.height=xl;
    }
    }
    }
    </script>
    <img src="sh180.jpg" onload="changeImg(this)">

  • 相关阅读:
    poj 3528 (三维几何求凸包+凸包表面积)
    dijkstra模板(好像是斐波那契额堆优化,但我为什么看起来像优先队列优化,和spfa一样)
    最大空凸包模板
    ICPC 2017–2018, NEERC, Northern Subregional Contest St Petersburg, November 4, 2017 I题
    hdu 5248 序列变换
    hdu 2063(二分图模板测试)
    组合数
    85. Maximal Rectangle 由1拼出的最大矩形
    750. Number Of Corner Rectangles四周是点的矩形个数
    801. Minimum Swaps To Make Sequences Increasing 为使两个数组严格递增,所需要的最小交换次数
  • 原文地址:https://www.cnblogs.com/zwei1121/p/596717.html
Copyright © 2011-2022 走看看