下面是上传图片后的生成缩略图的代码,我有点看不懂,求大侠帮我分析下
不懂   float tagsize=500; 这500 啥意思?
  if(old_w>old_h){     //改成>运算符的话,图片会把长边缩小成tagsize大小.. <运算符则把短边缩成tagsize大小..
     tempdouble=old_w/tagsize;
    }else{
     tempdouble=old_h/tagsize;
    }

这判断啥意思?
new_w=Math.round(old_w/tempdouble);
 new_h=Math.round(old_h/tempdouble);//计算新图长宽

这些又是啥意思?
最后面这个算法到底生成长跟宽多少的缩略图?
如果我想要生成300X200的缩略图应该怎么改?
求哪位帮我解说解说一下分析代码缩略图

解决方案 »

  1.   

    float tagsize=500;
    这是说将要缩放的图片的最长边为500,因为你原来的图片大小不定的,都要缩略成统一的大小,但又是同比例的,所以就只能限制缩小后的图片最长边为500
    于是下面就是决定最长边为长还是宽
    if(old_w>old_h){     //改成>运算符的话,图片会把长边缩小成tagsize大小.. <运算符则把短边缩成tagsize大小..
          tempdouble=old_w/tagsize;
         }else{
          tempdouble=old_h/tagsize;
         }
    下面是计算缩放后的图片尺寸
    new_w=Math.round(old_w/tempdouble);
    new_h=Math.round(old_h/tempdouble);//计算新图长宽
     
     
      

  2.   


    ew_w=Math.round(old_w/tempdouble);
    new_h=Math.round(old_h/tempdouble);
    那这段代码的为啥要old_w/tempdouble?用意何在?还有Math.round(old_w/tempdouble)用意何在?
      

  3.   

    math.round是一个四舍五入取整函数,因为除法造成结果可能小数位数很多,所以就四舍五入了
    tempdouble是确定了原来的图和新图的缩放比例。
    然后用原来的图的尺寸跟这个比例就计算出新图的尺寸了
      

  4.   

    举个简单的例子吧
    56*23这是一个图的尺寸
    要把这个图缩放成5*5
    那么我就要知道缩放比例
    所以就把56/5得到11.2 四舍五入后为11
    tempdouble就是11
    然后再把56/11,23/11 所以就5*2的这样一个图
    你要问为什么不是5*5呢,因为原来这个图就不是方的,是长的。所以只能同比例缩放成5*2